{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": []
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "cells": [
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "lOkoOEZCR2-T"
      },
      "outputs": [],
      "source": [
        "import pandas as pd\n"
      ]
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "kBSJqKarbzlF"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "akOV9OBScCSR"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "import os\n",
        "import pandas as pd\n",
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "import seaborn as sns\n",
        "import random\n",
        "import plotly.express as px\n",
        "\n",
        "from imblearn.over_sampling import RandomOverSampler\n",
        "from sklearn.model_selection import train_test_split\n",
        "\n",
        "import tensorflow as tf\n",
        "\n",
        "from tensorflow.keras.models import Sequential\n",
        "from tensorflow.keras.layers import Conv1D, LSTM, MaxPooling1D, Flatten, Dense, BatchNormalization, Input\n",
        "from tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint, ReduceLROnPlateau\n",
        "\n",
        "from sklearn.metrics import classification_report, confusion_matrix"
      ],
      "metadata": {
        "id": "liwRXhQMSMOv"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "from google.colab import drive\n",
        "drive.mount('/content/drive')\n"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "0BFsAe1MUje6",
        "outputId": "d14b6586-4175-40ed-ec86-18bdc1083a22"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Mounted at /content/drive\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "train_data = pd.read_csv(r'/content/drive/MyDrive/mitbih_train.csv',header=None)\n",
        "train_data.head()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 235
        },
        "id": "KyIwkN2hcDfe",
        "outputId": "3d239033-cf1b-41e3-ede2-a2e6439497fc"
      },
      "execution_count": 6,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "        0         1         2         3         4         5         6    \\\n",
              "0  0.977941  0.926471  0.681373  0.245098  0.154412  0.191176  0.151961   \n",
              "1  0.960114  0.863248  0.461538  0.196581  0.094017  0.125356  0.099715   \n",
              "2  1.000000  0.659459  0.186486  0.070270  0.070270  0.059459  0.056757   \n",
              "3  0.925414  0.665746  0.541436  0.276243  0.196133  0.077348  0.071823   \n",
              "4  0.967136  1.000000  0.830986  0.586854  0.356808  0.248826  0.145540   \n",
              "\n",
              "        7         8         9    ...  178  179  180  181  182  183  184  185  \\\n",
              "0  0.085784  0.058824  0.049020  ...  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0   \n",
              "1  0.088319  0.074074  0.082621  ...  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0   \n",
              "2  0.043243  0.054054  0.045946  ...  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0   \n",
              "3  0.060773  0.066298  0.058011  ...  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0   \n",
              "4  0.089202  0.117371  0.150235  ...  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0   \n",
              "\n",
              "   186  187  \n",
              "0  0.0  0.0  \n",
              "1  0.0  0.0  \n",
              "2  0.0  0.0  \n",
              "3  0.0  0.0  \n",
              "4  0.0  0.0  \n",
              "\n",
              "[5 rows x 188 columns]"
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-6d5bd72a-a418-4340-8827-ae2adc2075ab\" class=\"colab-df-container\">\n",
              "    <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>0</th>\n",
              "      <th>1</th>\n",
              "      <th>2</th>\n",
              "      <th>3</th>\n",
              "      <th>4</th>\n",
              "      <th>5</th>\n",
              "      <th>6</th>\n",
              "      <th>7</th>\n",
              "      <th>8</th>\n",
              "      <th>9</th>\n",
              "      <th>...</th>\n",
              "      <th>178</th>\n",
              "      <th>179</th>\n",
              "      <th>180</th>\n",
              "      <th>181</th>\n",
              "      <th>182</th>\n",
              "      <th>183</th>\n",
              "      <th>184</th>\n",
              "      <th>185</th>\n",
              "      <th>186</th>\n",
              "      <th>187</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>0.977941</td>\n",
              "      <td>0.926471</td>\n",
              "      <td>0.681373</td>\n",
              "      <td>0.245098</td>\n",
              "      <td>0.154412</td>\n",
              "      <td>0.191176</td>\n",
              "      <td>0.151961</td>\n",
              "      <td>0.085784</td>\n",
              "      <td>0.058824</td>\n",
              "      <td>0.049020</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>0.960114</td>\n",
              "      <td>0.863248</td>\n",
              "      <td>0.461538</td>\n",
              "      <td>0.196581</td>\n",
              "      <td>0.094017</td>\n",
              "      <td>0.125356</td>\n",
              "      <td>0.099715</td>\n",
              "      <td>0.088319</td>\n",
              "      <td>0.074074</td>\n",
              "      <td>0.082621</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>1.000000</td>\n",
              "      <td>0.659459</td>\n",
              "      <td>0.186486</td>\n",
              "      <td>0.070270</td>\n",
              "      <td>0.070270</td>\n",
              "      <td>0.059459</td>\n",
              "      <td>0.056757</td>\n",
              "      <td>0.043243</td>\n",
              "      <td>0.054054</td>\n",
              "      <td>0.045946</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>0.925414</td>\n",
              "      <td>0.665746</td>\n",
              "      <td>0.541436</td>\n",
              "      <td>0.276243</td>\n",
              "      <td>0.196133</td>\n",
              "      <td>0.077348</td>\n",
              "      <td>0.071823</td>\n",
              "      <td>0.060773</td>\n",
              "      <td>0.066298</td>\n",
              "      <td>0.058011</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>0.967136</td>\n",
              "      <td>1.000000</td>\n",
              "      <td>0.830986</td>\n",
              "      <td>0.586854</td>\n",
              "      <td>0.356808</td>\n",
              "      <td>0.248826</td>\n",
              "      <td>0.145540</td>\n",
              "      <td>0.089202</td>\n",
              "      <td>0.117371</td>\n",
              "      <td>0.150235</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "<p>5 rows × 188 columns</p>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-6d5bd72a-a418-4340-8827-ae2adc2075ab')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-6d5bd72a-a418-4340-8827-ae2adc2075ab button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-6d5bd72a-a418-4340-8827-ae2adc2075ab');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "<div id=\"df-eca84d98-f2a5-4c65-8a9e-34bfef765a62\">\n",
              "  <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-eca84d98-f2a5-4c65-8a9e-34bfef765a62')\"\n",
              "            title=\"Suggest charts\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "     width=\"24px\">\n",
              "    <g>\n",
              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
              "    </g>\n",
              "</svg>\n",
              "  </button>\n",
              "\n",
              "<style>\n",
              "  .colab-df-quickchart {\n",
              "      --bg-color: #E8F0FE;\n",
              "      --fill-color: #1967D2;\n",
              "      --hover-bg-color: #E2EBFA;\n",
              "      --hover-fill-color: #174EA6;\n",
              "      --disabled-fill-color: #AAA;\n",
              "      --disabled-bg-color: #DDD;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart {\n",
              "      --bg-color: #3B4455;\n",
              "      --fill-color: #D2E3FC;\n",
              "      --hover-bg-color: #434B5C;\n",
              "      --hover-fill-color: #FFFFFF;\n",
              "      --disabled-bg-color: #3B4455;\n",
              "      --disabled-fill-color: #666;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart {\n",
              "    background-color: var(--bg-color);\n",
              "    border: none;\n",
              "    border-radius: 50%;\n",
              "    cursor: pointer;\n",
              "    display: none;\n",
              "    fill: var(--fill-color);\n",
              "    height: 32px;\n",
              "    padding: 0;\n",
              "    width: 32px;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart:hover {\n",
              "    background-color: var(--hover-bg-color);\n",
              "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "    fill: var(--button-hover-fill-color);\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart-complete:disabled,\n",
              "  .colab-df-quickchart-complete:disabled:hover {\n",
              "    background-color: var(--disabled-bg-color);\n",
              "    fill: var(--disabled-fill-color);\n",
              "    box-shadow: none;\n",
              "  }\n",
              "\n",
              "  .colab-df-spinner {\n",
              "    border: 2px solid var(--fill-color);\n",
              "    border-color: transparent;\n",
              "    border-bottom-color: var(--fill-color);\n",
              "    animation:\n",
              "      spin 1s steps(1) infinite;\n",
              "  }\n",
              "\n",
              "  @keyframes spin {\n",
              "    0% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "      border-left-color: var(--fill-color);\n",
              "    }\n",
              "    20% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    30% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    40% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    60% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    80% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "    90% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "  }\n",
              "</style>\n",
              "\n",
              "  <script>\n",
              "    async function quickchart(key) {\n",
              "      const quickchartButtonEl =\n",
              "        document.querySelector('#' + key + ' button');\n",
              "      quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
              "      quickchartButtonEl.classList.add('colab-df-spinner');\n",
              "      try {\n",
              "        const charts = await google.colab.kernel.invokeFunction(\n",
              "            'suggestCharts', [key], {});\n",
              "      } catch (error) {\n",
              "        console.error('Error during call to suggestCharts:', error);\n",
              "      }\n",
              "      quickchartButtonEl.classList.remove('colab-df-spinner');\n",
              "      quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
              "    }\n",
              "    (() => {\n",
              "      let quickchartButtonEl =\n",
              "        document.querySelector('#df-eca84d98-f2a5-4c65-8a9e-34bfef765a62 button');\n",
              "      quickchartButtonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "    })();\n",
              "  </script>\n",
              "</div>\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "application/vnd.google.colaboratory.intrinsic+json": {
              "type": "dataframe",
              "variable_name": "train_data"
            }
          },
          "metadata": {},
          "execution_count": 6
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "test_data = pd.read_csv(r'/content/drive/MyDrive/mitbih_test.csv',header=None)\n",
        "test_data.head()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 235
        },
        "id": "X2hlYdzCcTfQ",
        "outputId": "824aaf7d-e328-4992-d67d-bc0f0a237066"
      },
      "execution_count": 7,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "        0         1         2         3         4         5         6    \\\n",
              "0  1.000000  0.758264  0.111570  0.000000  0.080579  0.078512  0.066116   \n",
              "1  0.908425  0.783883  0.531136  0.362637  0.366300  0.344322  0.333333   \n",
              "2  0.730088  0.212389  0.000000  0.119469  0.101770  0.101770  0.110619   \n",
              "3  1.000000  0.910417  0.681250  0.472917  0.229167  0.068750  0.000000   \n",
              "4  0.570470  0.399329  0.238255  0.147651  0.000000  0.003356  0.040268   \n",
              "\n",
              "        7         8         9    ...  178  179  180  181  182  183  184  185  \\\n",
              "0  0.049587  0.047521  0.035124  ...  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0   \n",
              "1  0.307692  0.296703  0.300366  ...  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0   \n",
              "2  0.123894  0.115044  0.132743  ...  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0   \n",
              "3  0.004167  0.014583  0.054167  ...  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0   \n",
              "4  0.080537  0.070470  0.090604  ...  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0   \n",
              "\n",
              "   186  187  \n",
              "0  0.0  0.0  \n",
              "1  0.0  0.0  \n",
              "2  0.0  0.0  \n",
              "3  0.0  0.0  \n",
              "4  0.0  0.0  \n",
              "\n",
              "[5 rows x 188 columns]"
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-85f9d945-4314-4925-af92-bedecdf81617\" class=\"colab-df-container\">\n",
              "    <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>0</th>\n",
              "      <th>1</th>\n",
              "      <th>2</th>\n",
              "      <th>3</th>\n",
              "      <th>4</th>\n",
              "      <th>5</th>\n",
              "      <th>6</th>\n",
              "      <th>7</th>\n",
              "      <th>8</th>\n",
              "      <th>9</th>\n",
              "      <th>...</th>\n",
              "      <th>178</th>\n",
              "      <th>179</th>\n",
              "      <th>180</th>\n",
              "      <th>181</th>\n",
              "      <th>182</th>\n",
              "      <th>183</th>\n",
              "      <th>184</th>\n",
              "      <th>185</th>\n",
              "      <th>186</th>\n",
              "      <th>187</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>1.000000</td>\n",
              "      <td>0.758264</td>\n",
              "      <td>0.111570</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.080579</td>\n",
              "      <td>0.078512</td>\n",
              "      <td>0.066116</td>\n",
              "      <td>0.049587</td>\n",
              "      <td>0.047521</td>\n",
              "      <td>0.035124</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>0.908425</td>\n",
              "      <td>0.783883</td>\n",
              "      <td>0.531136</td>\n",
              "      <td>0.362637</td>\n",
              "      <td>0.366300</td>\n",
              "      <td>0.344322</td>\n",
              "      <td>0.333333</td>\n",
              "      <td>0.307692</td>\n",
              "      <td>0.296703</td>\n",
              "      <td>0.300366</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>0.730088</td>\n",
              "      <td>0.212389</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.119469</td>\n",
              "      <td>0.101770</td>\n",
              "      <td>0.101770</td>\n",
              "      <td>0.110619</td>\n",
              "      <td>0.123894</td>\n",
              "      <td>0.115044</td>\n",
              "      <td>0.132743</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>1.000000</td>\n",
              "      <td>0.910417</td>\n",
              "      <td>0.681250</td>\n",
              "      <td>0.472917</td>\n",
              "      <td>0.229167</td>\n",
              "      <td>0.068750</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.004167</td>\n",
              "      <td>0.014583</td>\n",
              "      <td>0.054167</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>0.570470</td>\n",
              "      <td>0.399329</td>\n",
              "      <td>0.238255</td>\n",
              "      <td>0.147651</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.003356</td>\n",
              "      <td>0.040268</td>\n",
              "      <td>0.080537</td>\n",
              "      <td>0.070470</td>\n",
              "      <td>0.090604</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "<p>5 rows × 188 columns</p>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-85f9d945-4314-4925-af92-bedecdf81617')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-85f9d945-4314-4925-af92-bedecdf81617 button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-85f9d945-4314-4925-af92-bedecdf81617');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "<div id=\"df-386a7f09-5055-46d8-a8ee-341526ac9b6f\">\n",
              "  <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-386a7f09-5055-46d8-a8ee-341526ac9b6f')\"\n",
              "            title=\"Suggest charts\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "     width=\"24px\">\n",
              "    <g>\n",
              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
              "    </g>\n",
              "</svg>\n",
              "  </button>\n",
              "\n",
              "<style>\n",
              "  .colab-df-quickchart {\n",
              "      --bg-color: #E8F0FE;\n",
              "      --fill-color: #1967D2;\n",
              "      --hover-bg-color: #E2EBFA;\n",
              "      --hover-fill-color: #174EA6;\n",
              "      --disabled-fill-color: #AAA;\n",
              "      --disabled-bg-color: #DDD;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart {\n",
              "      --bg-color: #3B4455;\n",
              "      --fill-color: #D2E3FC;\n",
              "      --hover-bg-color: #434B5C;\n",
              "      --hover-fill-color: #FFFFFF;\n",
              "      --disabled-bg-color: #3B4455;\n",
              "      --disabled-fill-color: #666;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart {\n",
              "    background-color: var(--bg-color);\n",
              "    border: none;\n",
              "    border-radius: 50%;\n",
              "    cursor: pointer;\n",
              "    display: none;\n",
              "    fill: var(--fill-color);\n",
              "    height: 32px;\n",
              "    padding: 0;\n",
              "    width: 32px;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart:hover {\n",
              "    background-color: var(--hover-bg-color);\n",
              "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "    fill: var(--button-hover-fill-color);\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart-complete:disabled,\n",
              "  .colab-df-quickchart-complete:disabled:hover {\n",
              "    background-color: var(--disabled-bg-color);\n",
              "    fill: var(--disabled-fill-color);\n",
              "    box-shadow: none;\n",
              "  }\n",
              "\n",
              "  .colab-df-spinner {\n",
              "    border: 2px solid var(--fill-color);\n",
              "    border-color: transparent;\n",
              "    border-bottom-color: var(--fill-color);\n",
              "    animation:\n",
              "      spin 1s steps(1) infinite;\n",
              "  }\n",
              "\n",
              "  @keyframes spin {\n",
              "    0% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "      border-left-color: var(--fill-color);\n",
              "    }\n",
              "    20% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    30% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    40% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    60% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    80% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "    90% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "  }\n",
              "</style>\n",
              "\n",
              "  <script>\n",
              "    async function quickchart(key) {\n",
              "      const quickchartButtonEl =\n",
              "        document.querySelector('#' + key + ' button');\n",
              "      quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
              "      quickchartButtonEl.classList.add('colab-df-spinner');\n",
              "      try {\n",
              "        const charts = await google.colab.kernel.invokeFunction(\n",
              "            'suggestCharts', [key], {});\n",
              "      } catch (error) {\n",
              "        console.error('Error during call to suggestCharts:', error);\n",
              "      }\n",
              "      quickchartButtonEl.classList.remove('colab-df-spinner');\n",
              "      quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
              "    }\n",
              "    (() => {\n",
              "      let quickchartButtonEl =\n",
              "        document.querySelector('#df-386a7f09-5055-46d8-a8ee-341526ac9b6f button');\n",
              "      quickchartButtonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "    })();\n",
              "  </script>\n",
              "</div>\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "application/vnd.google.colaboratory.intrinsic+json": {
              "type": "dataframe",
              "variable_name": "test_data"
            }
          },
          "metadata": {},
          "execution_count": 7
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "print(f\"train data size: {train_data.shape}\")\n",
        "print(f\"test data size: {test_data.shape}\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "T1HvMSeFcf_y",
        "outputId": "e0e2bee5-2c06-4e86-8f5a-0c4958ff7cdc"
      },
      "execution_count": 8,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "train data size: (87554, 188)\n",
            "test data size: (21892, 188)\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "pd.set_option('display.max_rows', None)\n",
        "print(train_data.isna().sum())"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "e3koigVNckIz",
        "outputId": "a62a82b0-5789-4741-e2a3-6517cc1285dc"
      },
      "execution_count": 9,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "0      0\n",
            "1      0\n",
            "2      0\n",
            "3      0\n",
            "4      0\n",
            "5      0\n",
            "6      0\n",
            "7      0\n",
            "8      0\n",
            "9      0\n",
            "10     0\n",
            "11     0\n",
            "12     0\n",
            "13     0\n",
            "14     0\n",
            "15     0\n",
            "16     0\n",
            "17     0\n",
            "18     0\n",
            "19     0\n",
            "20     0\n",
            "21     0\n",
            "22     0\n",
            "23     0\n",
            "24     0\n",
            "25     0\n",
            "26     0\n",
            "27     0\n",
            "28     0\n",
            "29     0\n",
            "30     0\n",
            "31     0\n",
            "32     0\n",
            "33     0\n",
            "34     0\n",
            "35     0\n",
            "36     0\n",
            "37     0\n",
            "38     0\n",
            "39     0\n",
            "40     0\n",
            "41     0\n",
            "42     0\n",
            "43     0\n",
            "44     0\n",
            "45     0\n",
            "46     0\n",
            "47     0\n",
            "48     0\n",
            "49     0\n",
            "50     0\n",
            "51     0\n",
            "52     0\n",
            "53     0\n",
            "54     0\n",
            "55     0\n",
            "56     0\n",
            "57     0\n",
            "58     0\n",
            "59     0\n",
            "60     0\n",
            "61     0\n",
            "62     0\n",
            "63     0\n",
            "64     0\n",
            "65     0\n",
            "66     0\n",
            "67     0\n",
            "68     0\n",
            "69     0\n",
            "70     0\n",
            "71     0\n",
            "72     0\n",
            "73     0\n",
            "74     0\n",
            "75     0\n",
            "76     0\n",
            "77     0\n",
            "78     0\n",
            "79     0\n",
            "80     0\n",
            "81     0\n",
            "82     0\n",
            "83     0\n",
            "84     0\n",
            "85     0\n",
            "86     0\n",
            "87     0\n",
            "88     0\n",
            "89     0\n",
            "90     0\n",
            "91     0\n",
            "92     0\n",
            "93     0\n",
            "94     0\n",
            "95     0\n",
            "96     0\n",
            "97     0\n",
            "98     0\n",
            "99     0\n",
            "100    0\n",
            "101    0\n",
            "102    0\n",
            "103    0\n",
            "104    0\n",
            "105    0\n",
            "106    0\n",
            "107    0\n",
            "108    0\n",
            "109    0\n",
            "110    0\n",
            "111    0\n",
            "112    0\n",
            "113    0\n",
            "114    0\n",
            "115    0\n",
            "116    0\n",
            "117    0\n",
            "118    0\n",
            "119    0\n",
            "120    0\n",
            "121    0\n",
            "122    0\n",
            "123    0\n",
            "124    0\n",
            "125    0\n",
            "126    0\n",
            "127    0\n",
            "128    0\n",
            "129    0\n",
            "130    0\n",
            "131    0\n",
            "132    0\n",
            "133    0\n",
            "134    0\n",
            "135    0\n",
            "136    0\n",
            "137    0\n",
            "138    0\n",
            "139    0\n",
            "140    0\n",
            "141    0\n",
            "142    0\n",
            "143    0\n",
            "144    0\n",
            "145    0\n",
            "146    0\n",
            "147    0\n",
            "148    0\n",
            "149    0\n",
            "150    0\n",
            "151    0\n",
            "152    0\n",
            "153    0\n",
            "154    0\n",
            "155    0\n",
            "156    0\n",
            "157    0\n",
            "158    0\n",
            "159    0\n",
            "160    0\n",
            "161    0\n",
            "162    0\n",
            "163    0\n",
            "164    0\n",
            "165    0\n",
            "166    0\n",
            "167    0\n",
            "168    0\n",
            "169    0\n",
            "170    0\n",
            "171    0\n",
            "172    0\n",
            "173    0\n",
            "174    0\n",
            "175    0\n",
            "176    0\n",
            "177    0\n",
            "178    0\n",
            "179    0\n",
            "180    0\n",
            "181    0\n",
            "182    0\n",
            "183    0\n",
            "184    0\n",
            "185    0\n",
            "186    0\n",
            "187    0\n",
            "dtype: int64\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "labels = {\n",
        "    0: \"Normal\",\n",
        "    1: \"Artial Premature\",\n",
        "    2: \"Premature ventricular contraction\",\n",
        "    3: \"Fusion of ventricular and normal\",\n",
        "    4: \"Fusion of paced and normal\"\n",
        "}\n",
        "\n",
        "\n",
        "value_counts = train_data.iloc[:,-1].value_counts().rename(labels)\n",
        "\n",
        "pie_fig = px.pie(names=value_counts.index, values=value_counts.values,\n",
        "                 title=\"The Percentage of Each Label in The Train Dataset\")\n",
        "\n",
        "pie_fig.update_layout(title_x=0.5, width=800, height=600)\n",
        "pie_fig.show()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 617
        },
        "id": "JcDYvXE8cp8M",
        "outputId": "605bfb4d-b259-4a45-fc8f-901c2a1dca7c"
      },
      "execution_count": 10,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/html": [
              "<html>\n",
              "<head><meta charset=\"utf-8\" /></head>\n",
              "<body>\n",
              "    <div>            <script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_SVG\"></script><script type=\"text/javascript\">if (window.MathJax && window.MathJax.Hub && window.MathJax.Hub.Config) {window.MathJax.Hub.Config({SVG: {font: \"STIX-Web\"}});}</script>                <script type=\"text/javascript\">window.PlotlyConfig = {MathJaxConfig: 'local'};</script>\n",
              "        <script charset=\"utf-8\" src=\"https://cdn.plot.ly/plotly-2.35.2.min.js\"></script>                <div id=\"3be56d93-1d0f-40f5-a4bf-3dc16deb1d22\" class=\"plotly-graph-div\" style=\"height:600px; width:800px;\"></div>            <script type=\"text/javascript\">                                    window.PLOTLYENV=window.PLOTLYENV || {};                                    if (document.getElementById(\"3be56d93-1d0f-40f5-a4bf-3dc16deb1d22\")) {                    Plotly.newPlot(                        \"3be56d93-1d0f-40f5-a4bf-3dc16deb1d22\",                        [{\"domain\":{\"x\":[0.0,1.0],\"y\":[0.0,1.0]},\"hovertemplate\":\"label=%{label}\\u003cbr\\u003evalue=%{value}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"labels\":[\"Normal\",\"Fusion of paced and normal\",\"Premature ventricular contraction\",\"Artial Premature\",\"Fusion of ventricular and normal\"],\"legendgroup\":\"\",\"name\":\"\",\"showlegend\":true,\"values\":[72471,6431,5788,2223,641],\"type\":\"pie\"}],                        {\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmapgl\":[{\"type\":\"heatmapgl\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"legend\":{\"tracegroupgap\":0},\"title\":{\"text\":\"The Percentage of Each Label in The Train Dataset\",\"x\":0.5},\"width\":800,\"height\":600},                        {\"responsive\": true}                    ).then(function(){\n",
              "                            \n",
              "var gd = document.getElementById('3be56d93-1d0f-40f5-a4bf-3dc16deb1d22');\n",
              "var x = new MutationObserver(function (mutations, observer) {{\n",
              "        var display = window.getComputedStyle(gd).display;\n",
              "        if (!display || display === 'none') {{\n",
              "            console.log([gd, 'removed!']);\n",
              "            Plotly.purge(gd);\n",
              "            observer.disconnect();\n",
              "        }}\n",
              "}});\n",
              "\n",
              "// Listen for the removal of the full notebook cells\n",
              "var notebookContainer = gd.closest('#notebook-container');\n",
              "if (notebookContainer) {{\n",
              "    x.observe(notebookContainer, {childList: true});\n",
              "}}\n",
              "\n",
              "// Listen for the clearing of the current output cell\n",
              "var outputEl = gd.closest('.output');\n",
              "if (outputEl) {{\n",
              "    x.observe(outputEl, {childList: true});\n",
              "}}\n",
              "\n",
              "                        })                };                            </script>        </div>\n",
              "</body>\n",
              "</html>"
            ]
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "value_counts_test = test_data.iloc[:,-1].value_counts().rename(labels)\n",
        "\n",
        "pie_fig = px.pie(names=value_counts_test.index, values=value_counts_test.values,\n",
        "                 title=\"The Percentage of Each Label in The Test Dataset\")\n",
        "\n",
        "pie_fig.update_layout(title_x=0.5, width=800, height=600)\n",
        "pie_fig.show()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 617
        },
        "id": "e_2HLCprc4J3",
        "outputId": "dba6fb1d-c361-453f-e3db-57fee349595b"
      },
      "execution_count": 11,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/html": [
              "<html>\n",
              "<head><meta charset=\"utf-8\" /></head>\n",
              "<body>\n",
              "    <div>            <script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_SVG\"></script><script type=\"text/javascript\">if (window.MathJax && window.MathJax.Hub && window.MathJax.Hub.Config) {window.MathJax.Hub.Config({SVG: {font: \"STIX-Web\"}});}</script>                <script type=\"text/javascript\">window.PlotlyConfig = {MathJaxConfig: 'local'};</script>\n",
              "        <script charset=\"utf-8\" src=\"https://cdn.plot.ly/plotly-2.35.2.min.js\"></script>                <div id=\"8c74fe1e-f8af-45bd-a1a2-68ab61dfb957\" class=\"plotly-graph-div\" style=\"height:600px; width:800px;\"></div>            <script type=\"text/javascript\">                                    window.PLOTLYENV=window.PLOTLYENV || {};                                    if (document.getElementById(\"8c74fe1e-f8af-45bd-a1a2-68ab61dfb957\")) {                    Plotly.newPlot(                        \"8c74fe1e-f8af-45bd-a1a2-68ab61dfb957\",                        [{\"domain\":{\"x\":[0.0,1.0],\"y\":[0.0,1.0]},\"hovertemplate\":\"label=%{label}\\u003cbr\\u003evalue=%{value}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"labels\":[\"Normal\",\"Fusion of paced and normal\",\"Premature ventricular contraction\",\"Artial Premature\",\"Fusion of ventricular and normal\"],\"legendgroup\":\"\",\"name\":\"\",\"showlegend\":true,\"values\":[18118,1608,1448,556,162],\"type\":\"pie\"}],                        {\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmapgl\":[{\"type\":\"heatmapgl\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"legend\":{\"tracegroupgap\":0},\"title\":{\"text\":\"The Percentage of Each Label in The Test Dataset\",\"x\":0.5},\"width\":800,\"height\":600},                        {\"responsive\": true}                    ).then(function(){\n",
              "                            \n",
              "var gd = document.getElementById('8c74fe1e-f8af-45bd-a1a2-68ab61dfb957');\n",
              "var x = new MutationObserver(function (mutations, observer) {{\n",
              "        var display = window.getComputedStyle(gd).display;\n",
              "        if (!display || display === 'none') {{\n",
              "            console.log([gd, 'removed!']);\n",
              "            Plotly.purge(gd);\n",
              "            observer.disconnect();\n",
              "        }}\n",
              "}});\n",
              "\n",
              "// Listen for the removal of the full notebook cells\n",
              "var notebookContainer = gd.closest('#notebook-container');\n",
              "if (notebookContainer) {{\n",
              "    x.observe(notebookContainer, {childList: true});\n",
              "}}\n",
              "\n",
              "// Listen for the clearing of the current output cell\n",
              "var outputEl = gd.closest('.output');\n",
              "if (outputEl) {{\n",
              "    x.observe(outputEl, {childList: true});\n",
              "}}\n",
              "\n",
              "                        })                };                            </script>        </div>\n",
              "</body>\n",
              "</html>"
            ]
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "ecg_0 = train_data.loc[train_data[187]==0, :].iloc[1,:187]\n",
        "ecg_1 = train_data.loc[train_data[187]==1, :].iloc[1,:187]\n",
        "ecg_2 = train_data.loc[train_data[187]==2, :].iloc[1,:187]\n",
        "ecg_3 = train_data.loc[train_data[187]==3, :].iloc[1,:187]\n",
        "ecg_4 = train_data.loc[train_data[187]==4, :].iloc[1,:187]\n",
        "\n",
        "ecg_df = pd.DataFrame({'Normal': ecg_0,\n",
        "                       'Artial Premature': ecg_1,\n",
        "                       'Premature ventricular contraction': ecg_2,\n",
        "                       'Fusion of ventricular and normal': ecg_3,\n",
        "                       'Fusion of paced and normal': ecg_4})\n",
        "ecg_plot = px.line(ecg_df,\n",
        "                  labels={'index':'Time Intervals', 'value':'Amplitude (mV)', 'variable':'Categories'},\n",
        "                  title=\"One ECG form Each Category\")\n",
        "ecg_plot.update_layout(title_x=0.25, width=1000, height=500)\n",
        "ecg_plot.show()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 517
        },
        "id": "IV8Zdyqtc_FE",
        "outputId": "bd957c5c-0ae2-4fc1-df02-5ec26419b210"
      },
      "execution_count": 12,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/html": [
              "<html>\n",
              "<head><meta charset=\"utf-8\" /></head>\n",
              "<body>\n",
              "    <div>            <script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_SVG\"></script><script type=\"text/javascript\">if (window.MathJax && window.MathJax.Hub && window.MathJax.Hub.Config) {window.MathJax.Hub.Config({SVG: {font: \"STIX-Web\"}});}</script>                <script type=\"text/javascript\">window.PlotlyConfig = {MathJaxConfig: 'local'};</script>\n",
              "        <script charset=\"utf-8\" src=\"https://cdn.plot.ly/plotly-2.35.2.min.js\"></script>                <div id=\"d9fdfd03-4abb-4a36-ac19-fd60fef0e2f6\" class=\"plotly-graph-div\" style=\"height:500px; width:1000px;\"></div>            <script type=\"text/javascript\">                                    window.PLOTLYENV=window.PLOTLYENV || {};                                    if (document.getElementById(\"d9fdfd03-4abb-4a36-ac19-fd60fef0e2f6\")) {                    Plotly.newPlot(                        \"d9fdfd03-4abb-4a36-ac19-fd60fef0e2f6\",                        [{\"hovertemplate\":\"Categories=Normal\\u003cbr\\u003eTime Intervals=%{x}\\u003cbr\\u003eAmplitude (mV)=%{y}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"Normal\",\"line\":{\"color\":\"#636efa\",\"dash\":\"solid\"},\"marker\":{\"symbol\":\"circle\"},\"mode\":\"lines\",\"name\":\"Normal\",\"orientation\":\"v\",\"showlegend\":true,\"x\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186],\"xaxis\":\"x\",\"y\":[0.9601139426231384,0.8632478713989258,0.46153846383094793,0.19658119976520536,0.09401709586381912,0.12535612285137177,0.09971509873867035,0.0883190855383873,0.07407407462596893,0.08262108266353606,0.07407407462596893,0.06267806142568588,0.0655270665884018,0.0655270665884018,0.06267806142568588,0.07692307978868483,0.07122506946325302,0.08262108266353606,0.0911680907011032,0.09686609357595444,0.08262108266353606,0.08262108266353606,0.0911680907011032,0.10541310906410216,0.12250712513923644,0.14814814925193787,0.1823361814022064,0.19373218715190887,0.2136752158403397,0.20797720551490784,0.2222222238779068,0.25356125831604004,0.2706552743911743,0.28774929046630854,0.2849002778530121,0.2934472858905792,0.2564102709293365,0.2478632479906082,0.18803419172763824,0.14529915153980255,0.10826210677623747,0.08262108266353606,0.07977207750082016,0.07407407462596893,0.014245014637708664,0.0113960113376379,0.06267806142568588,0.05128205195069313,0.056980058550834656,0.04843304678797722,0.028490029275417328,0.03133903071284294,0.07692307978868483,0.025641025975346565,0.028490029275417328,0.037037037312984473,0.09401709586381912,0.08547008782625198,0.03988603875041008,0.05982905998826026,0.07407407462596893,0.07977207750082016,0.0911680907011032,0.09971509873867035,0.10826210677623747,0.0883190855383873,0.0911680907011032,0.0655270665884018,0.08547008782625198,0.0883190855383873,0.07692307978868483,0.08262108266353606,0.09686609357595444,0.09971509873867035,0.1339031308889389,0.10256410390138626,0.03988603875041008,0.0655270665884018,0.07407407462596893,0.08262108266353606,0.08547008782625198,0.056980058550834656,0.045584045350551605,0.10256410390138626,0.03988603875041008,0.0113960113376379,0.017094017937779427,0.03133903071284294,0.0056980056688189515,0.008547008968889713,0.03133903071284294,0.05128205195069313,0.056980058550834656,0.0883190855383873,0.0655270665884018,0.0113960113376379,0.056980058550834656,0.03988603875041008,0.03988603875041008,0.025641025975346565,0.0028490028344094758,0.01994301937520504,0.025641025975346565,0.0113960113376379,0.028490029275417328,0.01994301937520504,0.0227920226752758,0.03418803587555885,0.014245014637708664,0.05128205195069313,0.0683760717511177,0.13960114121437073,0.28774929046630854,0.5270655155181885,0.7777777910232544,1.0,0.8888888955116272,0.4928774833679199,0.19088318943977356,0.0883190855383873,0.06267806142568588,0.03418803587555885,0.0,0.03418803587555885,0.017094017937779427,0.0028490028344094758,0.0,0.04843304678797722,0.04843304678797722,0.05413105338811874,0.04273504391312599,0.05413105338811874,0.05982905998826026,0.06267806142568588,0.07122506946325302,0.07692307978868483,0.09971509873867035,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],\"yaxis\":\"y\",\"type\":\"scatter\"},{\"hovertemplate\":\"Categories=Artial Premature\\u003cbr\\u003eTime Intervals=%{x}\\u003cbr\\u003eAmplitude (mV)=%{y}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"Artial Premature\",\"line\":{\"color\":\"#EF553B\",\"dash\":\"solid\"},\"marker\":{\"symbol\":\"circle\"},\"mode\":\"lines\",\"name\":\"Artial Premature\",\"orientation\":\"v\",\"showlegend\":true,\"x\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186],\"xaxis\":\"x\",\"y\":[0.9836956262588501,1.0,0.33152174949646,0.0,0.10869564861059187,0.16304348409175873,0.1304347813129425,0.19021739065647125,0.28804346919059753,0.22282609343528748,0.17934782803058624,0.27173912525177,0.40217390656471247,0.42391303181648254,0.39673912525177,0.41847825050354,0.44565218687057495,0.4402174055576325,0.4347825944423676,0.4347825944423676,0.4402174055576325,0.4402174055576325,0.4510869681835175,0.46195653080940247,0.48913043737411493,0.47826087474823,0.46195653080940247,0.5054348111152649,0.5489130616188049,0.5597826242446899,0.592391312122345,0.6521739363670349,0.6847826242446899,0.66847825050354,0.6630434989929199,0.7228260636329651,0.717391312122345,0.6793478131294249,0.657608687877655,0.6304348111152649,0.5652173757553101,0.5054348111152649,0.4836956560611725,0.46739131212234497,0.46195653080940247,0.4347825944423676,0.40217390656471247,0.40217390656471247,0.41304346919059753,0.41304346919059753,0.375,0.39673912525177,0.42391303181648254,0.3804347813129425,0.3913043439388275,0.41304346919059753,0.41304346919059753,0.41304346919059753,0.40217390656471247,0.42391303181648254,0.41304346919059753,0.4347825944423676,0.42934781312942494,0.41847825050354,0.4347825944423676,0.44565218687057495,0.41304346919059753,0.41304346919059753,0.4347825944423676,0.42934781312942494,0.41304346919059753,0.4402174055576325,0.41847825050354,0.40217390656471247,0.39673912525177,0.40217390656471247,0.4347825944423676,0.40217390656471247,0.40760868787765503,0.40760868787765503,0.39673912525177,0.40217390656471247,0.40760868787765503,0.40217390656471247,0.41847825050354,0.375,0.3804347813129425,0.40760868787765503,0.41304346919059753,0.39673912525177,0.40217390656471247,0.40760868787765503,0.39673912525177,0.39673912525177,0.39673912525177,0.42934781312942494,0.41304346919059753,0.41847825050354,0.40760868787765503,0.41304346919059753,0.39673912525177,0.39673912525177,0.3804347813129425,0.4402174055576325,0.4347825944423676,0.40760868787765503,0.3913043439388275,0.40760868787765503,0.42934781312942494,0.4402174055576325,0.40217390656471247,0.42391303181648254,0.42391303181648254,0.3913043439388275,0.40217390656471247,0.38586956262588495,0.41304346919059753,0.41847825050354,0.42934781312942494,0.42934781312942494,0.41304346919059753,0.40217390656471247,0.42391303181648254,0.44565218687057495,0.42391303181648254,0.40217390656471247,0.39673912525177,0.41847825050354,0.42934781312942494,0.4402174055576325,0.4347825944423676,0.4402174055576325,0.4347825944423676,0.41304346919059753,0.41304346919059753,0.44565218687057495,0.4402174055576325,0.4347825944423676,0.41304346919059753,0.41847825050354,0.41847825050354,0.42934781312942494,0.42934781312942494,0.44565218687057495,0.42391303181648254,0.42934781312942494,0.41304346919059753,0.41847825050354,0.45652174949646,0.4347825944423676,0.41847825050354,0.42391303181648254,0.4402174055576325,0.45652174949646,0.42934781312942494,0.4347825944423676,0.45652174949646,0.4402174055576325,0.42934781312942494,0.4402174055576325,0.4402174055576325,0.4510869681835175,0.4347825944423676,0.44565218687057495,0.4347825944423676,0.42934781312942494,0.40760868787765503,0.44565218687057495,0.4402174055576325,0.4510869681835175,0.4347825944423676,0.42934781312942494,0.4347825944423676,0.42934781312942494,0.41304346919059753,0.4402174055576325,0.45652174949646,0.4836956560611725,0.46195653080940247,0.4836956560611725,0.5,0.4945652186870575,0.510869562625885,0.510869562625885,0.5054348111152649,0.4728260934352874,0.4347825944423676],\"yaxis\":\"y\",\"type\":\"scatter\"},{\"hovertemplate\":\"Categories=Premature ventricular contraction\\u003cbr\\u003eTime Intervals=%{x}\\u003cbr\\u003eAmplitude (mV)=%{y}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"Premature ventricular contraction\",\"line\":{\"color\":\"#00cc96\",\"dash\":\"solid\"},\"marker\":{\"symbol\":\"circle\"},\"mode\":\"lines\",\"name\":\"Premature ventricular contraction\",\"orientation\":\"v\",\"showlegend\":true,\"x\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186],\"xaxis\":\"x\",\"y\":[1.0,0.8656716346740722,0.6604477763175964,0.4589552283287048,0.2425373196601868,0.1268656700849533,0.16417910158634183,0.2425373196601868,0.2985074520111084,0.3507462739944458,0.3731343150138855,0.44029849767684937,0.447761207818985,0.444029837846756,0.4253731369972229,0.4104477465152741,0.4141791164875031,0.39925372600555414,0.4067164063453674,0.4067164063453674,0.3955223858356476,0.3880597054958344,0.39925372600555414,0.4141791164875031,0.4253731369972229,0.4253731369972229,0.4514925479888916,0.4962686598300934,0.5373134613037108,0.5447761416435242,0.611940324306488,0.6641790866851808,0.7014925479888916,0.7276119589805603,0.75,0.7611940503120422,0.746268630027771,0.7126865386962891,0.6977611780166626,0.6902984976768494,0.641791045665741,0.6156716346740723,0.6007462739944458,0.5970149040222168,0.5708954930305481,0.5559701323509216,0.5485074520111084,0.5559701323509216,0.5410447716712952,0.5223880410194397,0.5298507213592529,0.5373134613037108,0.5373134613037108,0.5223880410194397,0.5298507213592529,0.5410447716712952,0.5447761416435242,0.5335820913314819,0.5298507213592529,0.5447761416435242,0.5261194109916687,0.5149253606796265,0.5223880410194397,0.5373134613037108,0.5223880410194397,0.5186567306518555,0.5149253606796265,0.5261194109916687,0.5223880410194397,0.5074626803398132,0.503731369972229,0.5261194109916687,0.5074626803398132,0.503731369972229,0.503731369972229,0.5186567306518555,0.5111940503120422,0.5074626803398132,0.5149253606796265,0.5223880410194397,0.5223880410194397,0.5335820913314819,0.5671641826629639,0.64552241563797,0.746268630027771,0.7761194109916686,0.7164179086685181,0.6194030046463013,0.447761207818985,0.1753731369972229,0.0,0.003731343196704984,0.08955223858356477,0.17164179682731628,0.2537313401699066,0.31716418266296387,0.34328359365463257,0.3880597054958344,0.4328358173370361,0.4813432693481445,0.48507463932037354,0.4738805890083313,0.4589552283287048,0.4776119291782379,0.4776119291782379,0.47014924883842474,0.4738805890083313,0.48880597949028015,0.4925373196601868,0.4925373196601868,0.5,0.5186567306518555,0.5149253606796265,0.5223880410194397,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],\"yaxis\":\"y\",\"type\":\"scatter\"},{\"hovertemplate\":\"Categories=Fusion of ventricular and normal\\u003cbr\\u003eTime Intervals=%{x}\\u003cbr\\u003eAmplitude (mV)=%{y}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"Fusion of ventricular and normal\",\"line\":{\"color\":\"#ab63fa\",\"dash\":\"solid\"},\"marker\":{\"symbol\":\"circle\"},\"mode\":\"lines\",\"name\":\"Fusion of ventricular and normal\",\"orientation\":\"v\",\"showlegend\":true,\"x\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186],\"xaxis\":\"x\",\"y\":[0.7322515249252318,1.0,0.9837728142738342,0.48478701710700983,0.1784989833831787,0.11156186461448668,0.08113590627908705,0.05070994049310684,0.0466531440615654,0.0466531440615654,0.030425963923335075,0.038539554923772805,0.03448275849223137,0.03448275849223137,0.02434077113866806,0.022312372922897335,0.006085192784667015,0.018255578354001045,0.014198782853782175,0.016227180138230324,0.0,0.010141988284885883,0.010141988284885883,0.022312372922897335,0.014198782853782175,0.038539554923772805,0.04462474584579468,0.06085192784667015,0.06896551698446274,0.09939148277044296,0.10141988098621368,0.11561866104602812,0.10750506818294524,0.1135902628302574,0.10547666996717452,0.11764705926179884,0.10953346639871596,0.11156186461448668,0.1034482792019844,0.11156186461448668,0.10750506818294524,0.11156186461448668,0.1034482792019844,0.10953346639871596,0.10953346639871596,0.1135902628302574,0.10547666996717452,0.1135902628302574,0.10547666996717452,0.11967545747756958,0.11561866104602812,0.1298174411058426,0.14401622116565704,0.16227181255817413,0.1764705926179886,0.19472616910934448,0.18458418548107147,0.17241379618644714,0.1298174411058426,0.1318458467721939,0.1217038556933403,0.12373225390911102,0.11764705926179884,0.12373225390911102,0.11967545747756958,0.12373225390911102,0.10953346639871596,0.2352941185235977,0.5253549814224243,0.797160267829895,0.5415821671485901,0.10953346639871596,0.1034482792019844,0.12778905034065247,0.1318458467721939,0.1298174411058426,0.12373225390911102,0.12778905034065247,0.12373225390911102,0.1298174411058426,0.12778905034065247,0.13793103396892548,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],\"yaxis\":\"y\",\"type\":\"scatter\"},{\"hovertemplate\":\"Categories=Fusion of paced and normal\\u003cbr\\u003eTime Intervals=%{x}\\u003cbr\\u003eAmplitude (mV)=%{y}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"Fusion of paced and normal\",\"line\":{\"color\":\"#FFA15A\",\"dash\":\"solid\"},\"marker\":{\"symbol\":\"circle\"},\"mode\":\"lines\",\"name\":\"Fusion of paced and normal\",\"orientation\":\"v\",\"showlegend\":true,\"x\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186],\"xaxis\":\"x\",\"y\":[1.0,0.4848484992980957,0.5416666865348816,0.5265151262283325,0.5227272510528564,0.5075757503509521,0.4962121248245239,0.41287878155708313,0.28409090638160706,0.1401515156030655,0.0,0.08712121099233627,0.10606060922145844,0.11363636702299118,0.14772726595401764,0.2083333283662796,0.17045454680919647,0.16287878155708313,0.17424242198467255,0.1818181872367859,0.18939393758773804,0.185606062412262,0.19318181276321408,0.1818181872367859,0.185606062412262,0.1818181872367859,0.18939393758773804,0.17424242198467255,0.19318181276321408,0.1818181872367859,0.185606062412262,0.19696970283985135,0.2083333283662796,0.21590909361839292,0.23863635957241056,0.2537878751754761,0.26893940567970276,0.2916666567325592,0.3030303120613098,0.310606062412262,0.3333333432674408,0.3484848439693451,0.344696968793869,0.3333333432674408,0.3333333432674408,0.31818181276321406,0.2954545319080353,0.29924243688583374,0.28409090638160706,0.2765151560306549,0.26893940567970276,0.2575757503509521,0.25,0.2575757503509521,0.2575757503509521,0.24242424964904785,0.26893940567970276,0.26893940567970276,0.2651515007019043,0.28409090638160706,0.27272728085517883,0.24621212482452393,0.2575757503509521,0.25,0.24621212482452393,0.21590909361839292,0.21590909361839292,0.219696968793869,0.219696968793869,0.2083333283662796,0.19696970283985135,0.19318181276321408,0.185606062412262,0.1818181872367859,0.1818181872367859,0.18939393758773804,0.18939393758773804,0.19318181276321408,0.19318181276321408,0.17045454680919647,0.17803029716014862,0.1818181872367859,0.17045454680919647,0.17424242198467255,0.1818181872367859,0.1818181872367859,0.20075757801532745,0.185606062412262,0.1818181872367859,0.185606062412262,0.185606062412262,0.18939393758773804,0.19696970283985135,0.185606062412262,0.2083333283662796,0.2083333283662796,0.2234848439693451,0.28409090638160706,0.6553030014038086,0.9431818127632141,0.4924242496490479,0.5530303120613098,0.5530303120613098,0.564393937587738,0.5151515007019042,0.5265151262283325,0.5189393758773804,0.4507575631141663,0.34090909361839294,0.15530303120613098,0.1666666716337204,0.18939393758773804,0.1401515156030655,0.10227272659540176,0.11363636702299118,0.11363636702299118,0.12878787517547607,0.125,0.09090909361839294,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],\"yaxis\":\"y\",\"type\":\"scatter\"}],                        {\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmapgl\":[{\"type\":\"heatmapgl\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"xaxis\":{\"anchor\":\"y\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Time Intervals\"}},\"yaxis\":{\"anchor\":\"x\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Amplitude (mV)\"}},\"legend\":{\"title\":{\"text\":\"Categories\"},\"tracegroupgap\":0},\"title\":{\"text\":\"One ECG form Each Category\",\"x\":0.25},\"width\":1000,\"height\":500},                        {\"responsive\": true}                    ).then(function(){\n",
              "                            \n",
              "var gd = document.getElementById('d9fdfd03-4abb-4a36-ac19-fd60fef0e2f6');\n",
              "var x = new MutationObserver(function (mutations, observer) {{\n",
              "        var display = window.getComputedStyle(gd).display;\n",
              "        if (!display || display === 'none') {{\n",
              "            console.log([gd, 'removed!']);\n",
              "            Plotly.purge(gd);\n",
              "            observer.disconnect();\n",
              "        }}\n",
              "}});\n",
              "\n",
              "// Listen for the removal of the full notebook cells\n",
              "var notebookContainer = gd.closest('#notebook-container');\n",
              "if (notebookContainer) {{\n",
              "    x.observe(notebookContainer, {childList: true});\n",
              "}}\n",
              "\n",
              "// Listen for the clearing of the current output cell\n",
              "var outputEl = gd.closest('.output');\n",
              "if (outputEl) {{\n",
              "    x.observe(outputEl, {childList: true});\n",
              "}}\n",
              "\n",
              "                        })                };                            </script>        </div>\n",
              "</body>\n",
              "</html>"
            ]
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "data = train_data.iloc[:,:187]\n",
        "labels = train_data.iloc[:,187]\n",
        "# Initialize RandomOverSampler\n",
        "ovrs = RandomOverSampler(random_state=42)\n",
        "\n",
        "# Resample the data\n",
        "data_resampled, labels_resampled = ovrs.fit_resample(data, labels)\n",
        "\n",
        "train_df = pd.concat([data_resampled, labels_resampled], axis=1)\n",
        "\n",
        "train_df.shape"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "rI7RdZO4dJtb",
        "outputId": "c2b4d35f-62e4-4175-8fb6-f7b7462c79dd"
      },
      "execution_count": 13,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "(362355, 188)"
            ]
          },
          "metadata": {},
          "execution_count": 13
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "classes = {\n",
        "    0: \"Normal\",\n",
        "    1: \"Artial Premature\",\n",
        "    2: \"Premature ventricular contraction\",\n",
        "    3: \"Fusion of ventricular and normal\",\n",
        "    4: \"Fusion of paced and normal\"\n",
        "}\n",
        "\n",
        "# Calculate value counts and rename index using the labels dictionary\n",
        "value_counts = train_df.iloc[:,-1].value_counts().rename(classes)\n",
        "\n",
        "pie_fig = px.pie(names=value_counts.index, values=value_counts.values,\n",
        "                 title=\"The Percentage of Each Label After Balancing\")\n",
        "\n",
        "pie_fig.update_layout(title_x=0.5, width=800, height=600)\n",
        "pie_fig.show()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 617
        },
        "id": "5-ZIM9qfdSSD",
        "outputId": "2613b7ae-48f8-4b72-a8ce-894fe1881bb5"
      },
      "execution_count": 14,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/html": [
              "<html>\n",
              "<head><meta charset=\"utf-8\" /></head>\n",
              "<body>\n",
              "    <div>            <script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_SVG\"></script><script type=\"text/javascript\">if (window.MathJax && window.MathJax.Hub && window.MathJax.Hub.Config) {window.MathJax.Hub.Config({SVG: {font: \"STIX-Web\"}});}</script>                <script type=\"text/javascript\">window.PlotlyConfig = {MathJaxConfig: 'local'};</script>\n",
              "        <script charset=\"utf-8\" src=\"https://cdn.plot.ly/plotly-2.35.2.min.js\"></script>                <div id=\"98e3e023-b821-405c-b3d0-33b590ae34bf\" class=\"plotly-graph-div\" style=\"height:600px; width:800px;\"></div>            <script type=\"text/javascript\">                                    window.PLOTLYENV=window.PLOTLYENV || {};                                    if (document.getElementById(\"98e3e023-b821-405c-b3d0-33b590ae34bf\")) {                    Plotly.newPlot(                        \"98e3e023-b821-405c-b3d0-33b590ae34bf\",                        [{\"domain\":{\"x\":[0.0,1.0],\"y\":[0.0,1.0]},\"hovertemplate\":\"label=%{label}\\u003cbr\\u003evalue=%{value}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"labels\":[\"Normal\",\"Artial Premature\",\"Premature ventricular contraction\",\"Fusion of ventricular and normal\",\"Fusion of paced and normal\"],\"legendgroup\":\"\",\"name\":\"\",\"showlegend\":true,\"values\":[72471,72471,72471,72471,72471],\"type\":\"pie\"}],                        {\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmapgl\":[{\"type\":\"heatmapgl\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"legend\":{\"tracegroupgap\":0},\"title\":{\"text\":\"The Percentage of Each Label After Balancing\",\"x\":0.5},\"width\":800,\"height\":600},                        {\"responsive\": true}                    ).then(function(){\n",
              "                            \n",
              "var gd = document.getElementById('98e3e023-b821-405c-b3d0-33b590ae34bf');\n",
              "var x = new MutationObserver(function (mutations, observer) {{\n",
              "        var display = window.getComputedStyle(gd).display;\n",
              "        if (!display || display === 'none') {{\n",
              "            console.log([gd, 'removed!']);\n",
              "            Plotly.purge(gd);\n",
              "            observer.disconnect();\n",
              "        }}\n",
              "}});\n",
              "\n",
              "// Listen for the removal of the full notebook cells\n",
              "var notebookContainer = gd.closest('#notebook-container');\n",
              "if (notebookContainer) {{\n",
              "    x.observe(notebookContainer, {childList: true});\n",
              "}}\n",
              "\n",
              "// Listen for the clearing of the current output cell\n",
              "var outputEl = gd.closest('.output');\n",
              "if (outputEl) {{\n",
              "    x.observe(outputEl, {childList: true});\n",
              "}}\n",
              "\n",
              "                        })                };                            </script>        </div>\n",
              "</body>\n",
              "</html>"
            ]
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "x = train_df.iloc[:,:187]\n",
        "y = train_df.iloc[:,187]\n",
        "\n",
        "x_test = test_data.iloc[:,:187]\n",
        "y_test = test_data.iloc[: ,187]"
      ],
      "metadata": {
        "id": "FT5pbZhUdZDk"
      },
      "execution_count": 15,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "x_train , x_val , y_train , y_val = train_test_split(x,y ,test_size = 0.2 ,random_state = 42 ,stratify=train_df.iloc[:, 187] )"
      ],
      "metadata": {
        "id": "h0ciHA5lda04"
      },
      "execution_count": 16,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "print(f\"train data size: {x_train.shape}\")\n",
        "print(f\"validation data size: {x_val.shape}\")\n",
        "print(f\"test data size: {x_test.shape}\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "QIKhdEZ7df0N",
        "outputId": "fbc0e695-d9b6-4672-c513-4014dca5bcc7"
      },
      "execution_count": 17,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "train data size: (289884, 187)\n",
            "validation data size: (72471, 187)\n",
            "test data size: (21892, 187)\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "x_train = x_train.values.reshape(x_train.shape[0], -1, 1)\n",
        "x_val = x_val.values.reshape(x_val.shape[0], -1, 1)\n",
        "x_test = x_test.values.reshape(x_test.shape[0], -1, 1)"
      ],
      "metadata": {
        "id": "ldEWhQF8dmZm"
      },
      "execution_count": 18,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "y_train = tf.keras.utils.to_categorical(y_train)\n",
        "\n",
        "y_val = tf.keras.utils.to_categorical(y_val)\n",
        "\n",
        "y_test = tf.keras.utils.to_categorical(y_test)"
      ],
      "metadata": {
        "id": "7H6xKuZGdqFs"
      },
      "execution_count": 19,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "print('x_train shape: ', x_train.shape)\n",
        "print('y_train shape: ', y_train.shape)\n",
        "print('x_val shape: ', x_val.shape)\n",
        "print('y_val shape: ', y_val.shape)\n",
        "print('x_test shape: ', x_test.shape)\n",
        "print('y_test shape: ', y_test.shape)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "qLtQf5p-dtdq",
        "outputId": "74c0ac31-d63c-4227-e7d4-9d4605d46e0e"
      },
      "execution_count": 20,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "x_train shape:  (289884, 187, 1)\n",
            "y_train shape:  (289884, 5)\n",
            "x_val shape:  (72471, 187, 1)\n",
            "y_val shape:  (72471, 5)\n",
            "x_test shape:  (21892, 187, 1)\n",
            "y_test shape:  (21892, 5)\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "model = Sequential()"
      ],
      "metadata": {
        "id": "xp3Kfhy0dvE5"
      },
      "execution_count": 21,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "model.add(Conv1D(64, input_shape=(x_train.shape[1:]), kernel_size=3, activation='relu'))\n",
        "model.add(BatchNormalization())\n",
        "model.add(MaxPooling1D(pool_size=2, strides=1, padding=\"same\"))\n",
        "\n",
        "\n",
        "model.add(Conv1D(64, kernel_size=3, activation='relu'))\n",
        "model.add(BatchNormalization())\n",
        "model.add(MaxPooling1D(pool_size=2, strides=1, padding=\"same\"))\n",
        "\n",
        "\n",
        "\n",
        "model.add(LSTM(64, return_sequences=True, activation=\"tanh\"))\n",
        "model.add(LSTM(32, activation=\"tanh\"))\n",
        "\n",
        "# Flatten and Dense layers\n",
        "model.add(Flatten())\n",
        "model.add(Dense(64, activation='relu'))\n",
        "model.add(Dense(32, activation='relu'))\n",
        "model.add(Dense(5, activation='softmax'))"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "oZOER81pd0fp",
        "outputId": "fe031f49-cf7c-4328-bccd-a9dd47876190"
      },
      "execution_count": 22,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "/usr/local/lib/python3.11/dist-packages/keras/src/layers/convolutional/base_conv.py:107: UserWarning:\n",
            "\n",
            "Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.\n",
            "\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "model.compile(optimizer='adam',\n",
        "                  loss='categorical_crossentropy',\n",
        "                  metrics=['accuracy'])"
      ],
      "metadata": {
        "id": "fUk1EaUMd6II"
      },
      "execution_count": 23,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "y_pred = model.predict(x_test)\n"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "xtVFEzTBgdWR",
        "outputId": "3fc5ea09-b239-495d-a938-06ae50a1defa"
      },
      "execution_count": 26,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\u001b[1m685/685\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m85s\u001b[0m 119ms/step\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "y_test_labels = np.argmax(y_test, axis=1)\n",
        "y_pred_labels = np.argmax(y_pred, axis=1)"
      ],
      "metadata": {
        "id": "XUOE0TDBgqk4"
      },
      "execution_count": 27,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "print(classification_report(y_test_labels, y_pred_labels))"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "hWOUWPb8grrU",
        "outputId": "d6d5299d-5062-4658-f406-5a3b12dd46a1"
      },
      "execution_count": 28,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "              precision    recall  f1-score   support\n",
            "\n",
            "           0       0.89      0.30      0.45     18118\n",
            "           1       0.03      0.25      0.05       556\n",
            "           2       0.07      0.55      0.13      1448\n",
            "           3       0.00      0.00      0.00       162\n",
            "           4       0.00      0.00      0.00      1608\n",
            "\n",
            "    accuracy                           0.29     21892\n",
            "   macro avg       0.20      0.22      0.13     21892\n",
            "weighted avg       0.74      0.29      0.38     21892\n",
            "\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "confusion = confusion_matrix(y_test_labels, y_pred_labels)\n",
        "\n",
        "plt.figure(figsize=(8, 6))\n",
        "sns.heatmap(confusion, annot=True, fmt='d', cmap='Blues', cbar=False,\n",
        "            annot_kws={'size': 14, 'weight': 'bold'}, linewidths=.5)\n",
        "\n",
        "# Customize labels and title\n",
        "plt.xlabel('Predicted', fontsize=14, fontweight='bold')\n",
        "plt.ylabel('Actual', fontsize=14, fontweight='bold')\n",
        "plt.title('Confusion Matrix', fontsize=16, fontweight='bold')\n",
        "plt.show()"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 571
        },
        "id": "SDWLetfngv1R",
        "outputId": "6c9a3993-5568-4fe4-f3e0-16186136eac7"
      },
      "execution_count": 29,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 800x600 with 1 Axes>"
            ],
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAArAAAAIqCAYAAADcuXmTAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAceJJREFUeJzt3XdcVuX/x/H3zUY27r1wm3tbrlxpaebeZtPSMrPS6pvZsl972LRylKss08yZe+As98q9AQcoW+D+/UEeOIIKCNwceT0fDx/dZ96fwxXw5rqvcx2b3W63CwAAALAIJ0cXAAAAAGQGARYAAACWQoAFAACApRBgAQAAYCkEWAAAAFgKARYAAACWQoAFAACApRBgAQAAYCkEWAAAAFgKARbALZ04cULjx49XmzZtVKJECXl4eMjDw0OlSpVShw4d9H//9386ceKEo8s0sdvt+vrrr9WsWTP5+/vLyclJNptNNptNn3zyicPqatWqlVGHzWbTsWPHHFZLZqWu+9q/ESNG3HD/Dz74IN1j8vo1T5kyxVTv66+/7uiSAFyHAAvghuLi4vTss8+qYsWKev3117Vy5UqdPXtWcXFxiouL0+nTp7V06VKNGTNGderUcXS5JuPGjdOwYcMUHBysiIgI8dTsnDF16lRdvnw5zfrExERNnDgxx99/yJAhprC5atWqHH9PAI7n4ugCAORNsbGxateundatW2da7+PjowYNGsjb21uhoaHasWOHYmNjlZSU5KBK0/ftt9+alhs2bKgyZcpIkipVquSIkiRJLVu2VKFChYxlLy8vh9WSHa5cuaLJkyfr2WefNa2fN2+ejh8/7qCqbk+5cuXUvXt3Y7l69eoOrAZAegiwANI1fPhwU3i12Wx67bXXNGbMGHl4eBjrY2JiNHPmTId+LJ+ekJAQ43Xx4sW1efNmB1aTYvz48Y4uIdtNnDhRzzzzjGw2m7Hu008/dWBFt6dVq1Zq1aqVo8sAcBMMIQCQxu7duzV58mTTuvHjx+v11183hVdJ8vT01NChQ7Vly5Z0z7V8+XL1799fFStWlJeXlzw8PFSmTBk99NBD+vXXX9PtuU1vDOK5c+f07LPPqnz58nJ3d1exYsX08MMP6/Tp06Zjrx2T2tmzZ9Mdg5l6Xbly5dLUcauPp0+ePKnRo0erbt268vf3l4uLiwICAhQUFKT77rtPr732mv755x/TMRkZAxsZGanPP/9cbdu2VdGiReXm5iY/Pz/VqlVLzzzzjPbt25fu1zq9c69YsUKdO3dWYGCgPDw8VKNGDX388cfZMqSiZMmSkqRDhw5p4cKFxvrt27drzZo1kpL//wgICLjpeX766Sc99thjaty4scqUKSMfHx+5urqqYMGCatq0qV577TXTHyRSSttMnTrVtL5169bptll6/08dPXpUQ4YMUcmSJeXi4qIhQ4bccN9rHnzwQdO2SZMmmd7/zz//NG1v1qyZrl69muGvKYAMsgPAdV599VW7JONf4cKF7bGxsZk6R1xcnL13796m86T3r3Xr1vZLly6Zjp08ebJpn06dOtkLFiyY7vFly5Y1HX+r95NkP3r0aJp9y5Ytm+YaBg8ebNpn5cqVxrYDBw7YAwMDb/lezz//vOmcLVu2TLeWa7Zv324vV67cTc/p4uJi/+CDD9LUe/25Bw0adMNzPPvss5lozfS/tm+99Zbxul27dul+3R577DF72bJlb3rNNWrUuOXXMTAw0P7PP//csG1u9O9am13//1SXLl3svr6+pnWDBw9Od99x48YZ73vx4kXT9Xh7e9sPHTpkt9vt9nPnztmLFCliqvnEiROZ/joDuDWGEABIY/369able++9V+7u7pk6x1NPPaXZs2cbyy4uLqpfv77c3d21efNmxcbGSpJWrlypnj17atmyZTc817Xevbp168rb21sbNmxQYmKiJOn48eP68ssv9fLLL0uSMXbx119/NY4vUKCA7rvvPmM5O8adfvjhh7p48aKxXLVqVVWqVElRUVE6ffq0jh49qvj4+Eyd8/z58+rQoYOpt7FgwYKqV6+eTp8+rb1790qSEhISNHr0aBUrVkz9+/e/4fmmTZsmb29vNWrUSCdOnNChQ4eMbZ9//rmef/55lS5dOlM1pvbEE0/orbfeUmxsrP766y/t27dPBQsW1KxZs4x9nnnmGS1duvSW5/Lw8FDVqlUVGBgoHx8fRUdHa8+ePTpz5owk6eLFi3r44YeNHu2GDRsqMjJSW7duNY21bdGihQoXLmwsp36d2vz58yVJpUqV0l133aULFy7I2dn5lnUGBARo5syZatGihRISEhQZGamBAwdqzZo1evjhhxUaGiopuXd/2rRpt/X1BXATjk7QAPKe6tWrm3qgxowZk6nj9+7da7fZbKYew9WrVxvbd+3aZffz8zO9x+LFi43t1/eASbJPnjz5httbt26dpobU29PrXc3IPjfrgW3Xrp2x/t57701zbGRkpH3BggX2JUuWmNbfrAd2zJgxpm2NGzc29S6/+eabpu0lS5a0JyYm3vDcZcuWtR87dsxut9vtV69etd97772m7VOnTk3363Ij17eJ3W63Dx061FgeNmyYffz48Wm+Lrfqgd25c6c9Li4uzfslJibae/XqZTp23759pn1u1kappff/1EsvvWT6+l37lOFmPbDXvPfee6Z9mjZtalp+4YUXMvplBZAFjIEFcEv2TI6XXLBggemY7t27q0WLFsZyzZo19fjjj5uO+eOPP254vsaNGxvjEyWpS5cupu3Xj4PNDWXLljVeb9myRW+88Ybmzp2rXbt2KSYmRl5eXurcubPat2+f4XNe6xW85vXXX5e/v7+xPGbMGJUoUcJYPn36tP7+++8bnm/MmDFGnS4uLurUqZNpe3Z83Z555hnj9bRp0/Tll18ay9fPTHAj5cuX1xdffKG2bduqZMmS8vT0lM1mk7Ozs37++WfTvvv377/tmiWpcuXKevvtt+XklPJrMDOfMowePdr09QwODjZeN2vWTO+880621AkgfQRYAGkULVrUtJzZieev3/+uu+5Ks0/t2rVNy0ePHr3h+Ro2bGha9vPzMy3HxcVlqr7s8Pzzzxvh8vLlyxo3bpweeugh1apVSz4+PqpXr57eeecdRUZGZvict/q6ubi4pJnSydFft9q1axt37EdFRRnDHypWrKjOnTvf8vjQ0FDVq1dPo0aN0vLly3XmzBljeEl6IiIibrtmSbrnnnsyNGTgRq4NEShevLhpva+vr2bNmiUXF0boATmJAAsgjebNm5uWly9fnqmwc32P7fWzAmRWwYIFTcu3EzxuJCEhIc266+98T61q1aravXu3Xn75ZdWvX980O0NiYqL++ecfvfLKK2rTpo0xXvdWrPh1k8y9sNcMHz7c1Lt5I2+88Yb+/fdfY9nFxUXNmzdXt27d1L17d1WrVs20f2Y/DbiR1D3ZWXXy5EldunTJtO7KlSs3nCUCQPYhwAJIo3fv3qbwcf78eb333ns3PSZ1wC1fvrxp265du9Lsv3PnTtPy9cfkBldXV+P1xYsXTeEoJiZG27Ztu+nxJUuW1Ntvv62tW7caN28tW7ZM99xzj7HPli1btHbt2gzVc6uvW0JCgnEj142OcYQuXbqYpiHz8fHR0KFDM3Ts9V+b9evXa926dfrtt980Z84c09cyPVkN+RkJ1zdz5coV9erVK01vsd1u14ABA4ybzwDkDAIsgDRq1qxpGnMqJT+adfz48Wl+YcfExOj77783fVzduXNnU7D49ddfTTMb7N27N82Tsu6///5svIKMSd0LFxMTo2nTpkmS4uPjNWLECIWFhd3w2Llz5+rXX381hgg4OTmpRIkSatu2bZrQde7cuQzVc/3XYPz48aaPzN9//31TMCpRooTq1auXoXPnJGdnZz333HMqWLCgChYsqCeeeEK+vr4ZOvb6OVILFChgvA4ODtZPP/100+M9PT1Ny7k1Hvrxxx839Rw/99xzxv/zYWFh6tu3b4Z73gFkHoN0AKRr4sSJOnjwoPE0Lrvdrtdff10ffvihGjZsaDxKdvv27YqNjTWNr6xevboGDRpkTDJ/9epVtWrVSg0bNpSbm5s2b96smJgYY//WrVurY8eOuXuBktq1a6fvvvvOWB4yZIheeeUVXbx40VRfelavXq1PP/1Ubm5uqlq1qkqWLCk3NzedPHkyzY1V138MfiPPP/+8Jk+ebATn4OBgBQUFGdNo7dmzx7T/hAkTbrsnMbs888wz6Q4luJUmTZqYPnJv2rSp7r77bl2+fFkbN2685ZCBqlWrmpaHDRumGTNmyNPTU76+vvrhhx8yXdOtfP3116apwh599FF99NFHcnV1NT6pWLNmjcaNG6e33nor298fAD2wAG7A09NTf/31l0aMGGEaO3nlyhWtWLFC8+fP18aNG40e2euD1DfffKMePXoYywkJCQoODtbq1atN4bBFixaaM2dODl9N+l5++WXTXf5Scg9eTEyMqlWrprZt297yHPHx8dq5c6cWLVqkefPmpQmvTzzxRJob1m6kSJEiWrx4scqUKWOsO3/+vJYuXWoKr87Oznr33Xc1aNCgDJ03L/vf//5nGqsbGRmpxYsXa8OGDSpfvryefPLJmx7fs2dPU2/vlStXtHDhQv36669pZnXIDtu3b9dzzz1nLFeuXNl4jPJbb72lBg0aGNsmTJhw0/mNAWQdARbADbm7u+uzzz7T4cOHNW7cOLVs2VLFihWTu7u73NzcVLJkSbVr104TJkzQ9u3b0xz7yy+/aMmSJerbt6/Kly8vT09P47iuXbtq9uzZWrlypQIDAx1yfeXLl1dwcLC6d++uwMBAubm5qVKlSnr11Ve1ZcsW41Gp6XnyySf13nvvqVu3bqpataoKFSokFxcXeXp6qnz58urevbt+//13ff3115mqqV69etq9e7c+/vhjtW7d2jivt7e3atSooaefflo7duzQSy+9dLuXnyeUL19eW7ZsUb9+/VSoUCG5urqqbNmyeuaZZ7RlyxYVKVLkpscXL15cK1eu1AMPPKBChQrlaI/09eNeXV1dNX36dOPBGK6urpoxY4a8vb0lSUlJSRowYIDOnj2bYzUB+ZXNnl23dAIAAAC5gB5YAAAAWAoBFgAAAJZCgAUAAIClEGABAABgKQRYAAAAWAoBFgAAAJZCgAUAAIClEGABAABgKS6OLiA3NZ6w2tElIJdsGttSPaf8fesdcUf4ZUg9edYd7ugykEti/pmo2ARHV4Hc4uEi2jsf8chgMqUHFgAAAJZCgAUAAIClEGABAABgKQRYAAAAWAoBFgAAAJZCgAUAAIClEGABAABgKQRYAAAAWAoBFgAAAJZCgAUAAIClEGABAABgKQRYAAAAWAoBFgAAAJZCgAUAAIClEGABAABgKQRYAAAAWAoBFgAAAJZCgAUAAIClEGABAABgKQRYAAAAWAoBFgAAAJZCgAUAAIClEGABAABgKQRYAAAAWAoBFgAAAJZCgAUAAIClEGABAABgKQRYAAAAWAoBFgAAAJZCgAUAAIClEGABAABgKQRYAAAAWAoBFgAAAJZCgAUAAIClEGABAABgKQRYAAAAWIqLowvI7+YOa6wS/h433efxH//RjlOX091WzNddMx5tIC/3lKZ8Y8F+/bkrxLRftzrF1bh8gCoU9pJ/AVd5ubso7mqizkTE6u8T4fp562mduhRrOsbZyaae9UuoWnEfVSvmo9KBnnKy2SRJ246H66kZO7JyyUjlxTYV1LCMv7G859wVvb74X2O5ejFvje9Y+abnOHc5ViN+25tmfeXCXupcvYiqFPGSn4eLYhOSdOxijJb/e17rjly66TkblfFTy6CCCipUQL7uLoq5mqRLMVe1PzRSC/aE6uzluMxdaD7k6uKsId2a6qG2dVU9qIQCfAooMSlJoRev6J+9JzRt/kYtXLM7zXHd29XV0O7NVbtKaXkXcNO585e1cvMBfTB5mQ6fCEv3vfrc10ADuzZR7Sql5ePlrgvhUQreflif/bRSm3YeTbN/ySL+GvRgE9WrXlb1q5dR8cJ+xra3vl6ot79ZmH1fCNyWY8eOavL3k7R540aFhYXKy8tLVatV10M9eqpDx06OLg/ZjPbOOAKsxb3SqYopvN5IzwYlVbGwl2mdi7uLKhXxVqUi3nqgVnGNmLVTu0+nBGVPVyc91zYo22tGshYVAk3hNTt1qVFE/RuUNP7gkCRvZyfVLO6jmsV91KC0nz5bc0xJdvNx7i5OGtminBpcV5ePs5N8PFxUJsBT+0OiCLC34OzspD++fFotG5r/+HCVs8oUD1SZ4oHqem8d/d93S/T6F38Y278dP0ADuzQxHVO2REENebCZendsoL4vfKcl61L+WHF2dtL0/xuqrvfWMR1TvLCfHmpXTw/eW0ej3/9VX81abdper3oZvTbs/my6WuSUtWtW6/mRIxQXl/L9Fh4ero3BG7QxeIPWrVmjN96eIFuq73NYF+2dOQTYPOSz5YfTXX8mPDbd9Q/VLa5G5QMydO7IuARtOHxRJy5G61L0Vbm7OKlR+QDVLOErSSrg5qxH7y6rkbN3mY67mpikI2FR2ncuUg3L+qtkgGcmrgg3EuDpqocbl8rUMYfOR2nD0bQ9p1HxiabloEIFNLBhyrmPXYzW5hMRKuLtphYVAuXkZFPz8oE6cj5a8/eEmo59qnlZI7wmJNn196kInboUq7jEJPl7uqhsgKfiEpIyVXd+1LV1bVN4/XvvCf2xaqf8fTw1+MGm8vcpIEkaNbitPpq6TJcjYzWsT0tTeP158VbtO3JOPTvUV/WKxeXp4aYp7wxR/e5v60xYhCTp2QFtTOH1z9W7tG3vcd1dL0htGleVk5OT3h/dXVt3H9OW3cdNNV6JitWOA6f0994TemZAmxz8aiArQkJCNOaFUUaYqVAxSB3v66Qjhw9r8aI/JUnz581VjZp3qU+//o4sFdmA9s48AmweMn3zqQzvW9zPXcNbV5AkrTpwXq2qFLrp/o//uD3Num/WHNPPjzdU2YLJv0yL+bqbtkfGJar1h+t0NTG5m+7LfrUJsNnk8WZl5O3uorDIOF2JS1SF/9rgZk6Fx+qP6wJneloHFTRex1xN1LhFBxV9NTl0xickqX3VwpKkLjWLauG+MCX81w1bvZi3mv33B1HM1US9vvhfHbkQnelrg1ShtPn78YGnvtDFiChJ0tmwCL076iFJkqurs/x9PBUVE68XhrY39p+1cIsefmWqJOmb2Wu0/8/x8vX2lL9PAT3Vt5Ve/WyeJJkC7/q/D6nHyG8kSTabTVt/eVnVKxaXs7OTXnikg3o9962x75L1e1X0nhdktye3PQE275nx41RFRkZKkry8vDRl2nT5+ftLkpycbFr45wJJ0neTvlbP3n3k7OzsqFKRDWjvzOMmrjzk1ycbad2L92jFqOb6YXBdDWpSWu4u6TfRq/8NHTh+IVpfrU47xu1WfDxcdG/VwiqaKrQePZ82rFwLr8g+rYIC1aC0n5Lsdn25/oRiribe+iBJ9Uv56fs+tTRzYB1N6n2XXmpTQXVK+qbZr4hPSpuGRcYb4VWSjl+KMV77eboqqFBKcE4dfPeHROq+aoX1+UM1NH1gHX3Vo6Yea1pagQVcM3Wt+dW+I+dMy93b15WHu6uKFfJV68ZVUu13VifOXkozDvX35duN15cuR2vNtkPGcueWdxmvy5dKabNdB08br+12u/YeOmMst21SVc7OKT9L4q8mGOEVedOqVSuM1w0aNjLCjCTd266D8TosNFR79qQdSw1rob0zjx7YPKTUf72brs5OqlHCVzVK+Oq+mkU1bPoOhcdcNfbrUa+EGpQLUGKSXW/8eUBxCRkLQM42acOYluluC7kcm6UgjMwJLOCqwf99vL/swHntPntFPWoXy9CxPh4p367+nk5qUMZfDcr4a/7uEP24NSW8RKcaUlDY202erk6K+S/ElrmuB710gKf2hyb3DFYpkjJGum4pP9N+hbzd1L5KYTUu46/XFh3UGcbA3tSfq3dp/ood6tKmtiTps5f76LOX+5j2WbnpgJ56c4YkqWalkqZtR0+dNy0fS7VcqWwRubm6KP5qgiIiY1UkMPmPihqVSpiOqVaxuPHa08NNFUsX1sFj5ps7kTfFx8fr+LFjxnKpUqVN269f/vfAAdWqVTs3SkMOoL2zJs8F2PPnz+uHH35QcHCwzp1L7sUoVqyYmjVrpiFDhqhw4cIOrjD7nbwYrX9ORuhcRJx8PV3UpmphoxetQmEvvdihkl7+PfnGjRL+Hnr6v6EDMzaf0u7Tl1Xcz/2G586I/eeu6OW5e3X6BmNtkX2e+G/oQMiVOP2UKnTeTGKSXftCInXiUowuxyaolL+HmpYLkLNT8kD+LjWLas+5K/r7v5kqtp2MMIYCeLo66/WOlbXlRLgKe7upZcWCpnN7uaV8DBXgae5dvRAVr9WHLsq/gItaVSwoJyeb/DxdNax5Wf1v0cEsfw3yi97PT9L/hnXWmEc7yMnJ/EnK8TMXNHPhFh07fUGSFOhnHkJyOcr8vXglOmXZ2dlJAb6eCrlwRQvX7NKQB5tJku6pX0k/f/y4/t57Qs3rVlSNIHOgDfC99TAV5A2XIyJMPeRe3t6m7V5e5htyw8PDc6Ms5BDaO2vyVIDdsmWLOnTooAIFCqht27aqXDn5JoiQkBB99tlnevfdd7VkyRI1aNDgpueJi4sz3cUnSe7utxfycsrI2Tt1/GKMad03a45p8pB6KvffuMiWVQrJy91ZUXGJerVTFRVwc9bR81H6Zk3mekwT7ck3ijk52RTo5abmFQNVtmABVS3mo2kP19fYuXu1+djNp1dC1rUOKqh6pf4bOrDuuGIzcDPUiYsxevznXbocm2Bav+rQBb3cLsiYZaB1UEEjwK49clFNy/kbN2NVKFjghmNsE1JNQ+DiZL6z9Z1lh3Tivz9qouIS9UDNopKkqkW9VcTbTaGR8Rm46vzJxcVJ3785SL06Jv+s2nv4rOb+9Y8C/bw0qGsTlS1RUN+OH6A6VUvp+ffmpDn++ruMbUr/ruNxn/+hFvUrqULp5D/sH2hVSw+0qpXuvvFXE9Jdj7zv+uEeDP+4s9HeGZOnAuyIESPUs2dPff3112l+gNvtdj355JMaMWKEgoODb3qeCRMmaPz48aZ148aNk9xbZ3vNt+v68ColfwS8YOc54yYtFyebygQWUOkAD9Uv66+EJLvGLziQpfGpqW8U+3zFYX3S+y41Lh8obw8XjXugih78chPjXnOAq7NNgxslf0y8eF+Y9oZEZui4yPj0h4fsOHNFZyLiVOq/OYRL+qXMJWyX9P7KI2pXpZBaBRVUKT8PJdrtOhUeq3VHLunhxqWM4HspOmVoSlR8ovw8k3sKr8QmGOFVkvacizQCrCQV9XEnwN7Eo93vNsLrpcvRaj3kQ12OTP56bt1zXN+/OUiS9GTvFvpq1hpdCI8yHe9TwPwHt49XynJiYpIuXU7+uRF68Yqa939PLwxtrwda11aZ4gG6dDlGf+89ob2Hz2j0wyk3hp39b+YC5H2+fn6y2WxGcImOMv//ERVtXg4IyNhsNMibaO+syVMBdseOHZoyZUq6c5zZbDY999xzqlu37i3PM3bsWI0aNcq0zt3dXYs+2phtteY2u92uQC83ScmBdsqQejfc97X7q+q1+6um+0CD1JLs0rpDF9W4fKAkqZC3u8oVLKB/Q6NueAyyxtXZSV5uyd9unaoXUafqRdLdr0YxH/0ypF6aBxrcyvV/ciTZpSX7z2vJfvNYyiZl/U1zwx4MS2nrk+Gx8vNM/yat678lryYyldbNtG6UcqPWoeOhRniVkqfUusbJyUl3VS6h3f+ah5OUL1VIO1PdlFW+VMrQqX+Ph5p6U8OvxOiVT+fplU/nmc7x8Us9jdfHz1zQufPpPwwFeY+bm5vKlS+vo0eOSJJOnTpp2n7qxAnTclDlmz/sBHkb7Z01eWoWgmLFimnz5s033L5582YVLVr0htuvcXd3l6+vr+lfXhxC0KpyIXWoUUTO14WDAm7Our9Wyo098QlJOpFOT21GVSriZZpt4BqbpKYVAk3r+KQib+lTt7jKpPOktlolfFQi1djnE5fM/394u6edYsXf00UDG6TcLLT77BWFpepF3XYqpYfOx8NFpVO9b7WiKWOyEhKTTLMZIC2nVHf8B5UtIl/vlK9lveplTPvGxF7Vtr0ndCY03Fj3YKq5XQv6e6lFg0rG8oLVO43XNptNft5pp7ZrXreihnZvbixPm2fdP97zq5atUqY227plsyJSjXtcunSx8bpI0aKqUaNmbpaGHEB7Z16e6oEdPXq0Hn/8cW3btk333nuvEVZDQkK0fPlyTZo0SR988IGDq8w+xfzc9VzbII1oXUHBRy7qdHis/D1ddW/VwiqSKnAu3hOi6PhEnbwYoxX70z5K0sPVSc1S3Zyz9+xlnYuI09mI5F6f+mX99Uybitp1+rL2nLms8Oir8vV0VdMKAQoqkhJMzoTH6HCYuff1mTYVjNelAjxMr1Nv+2zFkdv4Stz5EhKTtPEG44urF/OWr0dyz+fl2Kvaey5SJ//7+L5+aT91r11cB8OitD8kUlHxiSrt76Em5QJMPalLD5h7Wl9pG6SEJLsOX4jW5dgEFfV2U5NyASrw301bVxOTNG2Led7hFf9eUNeaReX/Xy/sy+2CtPrQBfl7upqm2Fp16KIxqwHSt3brv7r/v+muAnwLaOWU5zX3r38U4FtAg7o2NfaLjI5T8PYjSkqy6/0flurjMb0kSX06NZSTk037jpxTr4715f3fkILwK9H6cmbKU7UKeLjq2F/v6K+N+7X/yFnFxSeoZlAJ3d+qljFt1pGTYfp8+kpTfeVLFdLjPe9Jt/a2Tasa73fkVJgm/bIum74qyIx+AwZpzs+zFBkZqaioKA0Z1N+Y2H7p4kXGfo88+gRzgt4BaO/Ms9nz2Ojg2bNn6+OPP9a2bduUmJg8/s/Z2Vn169fXqFGj1KtXryyfu/GE1bfeKRf1aVjylo9q/ftEuEb9vOumgaG4n7t+fyplQvPrhw5k5H3Co6/q+V92afeZK6b1m8amP+3W9fLa13bT2JbqOeVvR5eRIa93rKQaxXwkKc3Qgfe7VFW5wBvfPZ6YZNePW0/rz73mBxy8e38VVSzkle4xsVcT9emaY9p6Mu2YyKpFvDS2bZARdK93IDRSby09lKEb0HLTL0PqybPucEeXYfBwd9Xib59R41rlb7hPYmKShr0xQz/OT+kdTe9RstfExManeZSsl6ebzm/46IbvcfhEmB4c8ZUOnTD//3FP/Upa+t2zt7yONVv/VYfHPr3lfrkt5p+Jis0H96StWb1Kz48cofj49Mebd+naLV88WtTDRbS38ld7Z0Se6oGVpN69e6t37966evWqzp9P7lUqVKiQXF3vvAnUF+w8p/Doq7o7qKCCingp0MtNXm7OuhyboH9DI7VkT6gW7Q5J87z6zAo+fFEFvU6odik/FffzkK+ni5ydbLoSm6Cj56O16ehFzf3nbJo73eF4n6w+poZl/FS7hK+KeLvJz9NVNpt0MSpee0MitXhfmI6mM7xk6YHzahqXqFL+HvL1cFFikl1hkfHafvqyFuwJ1aVU8wqntj80Ss/P26cH7yqq2iV8FejlqsSkazeAXdTSA+dNMxcgfbFxV9XukU809KHm6ta2jqoHFZe/dwElJCbqbFiEgncc0VczV2vbXvPYtsfH/aSl6/dq6EPNVbtqKXl5uin0whWt2HRAH0xeliaIxsYn6IPJS3VP/UoqW6KgAv0KKDI6TvuPnNO8FTv07S9rFRuXflsj72vRspV+mTtfP3z3rTYFB+vChfPy9CygqtWqqUev3urQsZOjS0Q2or0zJ8/1wOakvNZLiJxjpR5Y3L681gOLnJVfemCRLL/0wCJZRntg89RNXAAAAMCtEGABAABgKQRYAAAAWAoBFgAAAJZCgAUAAIClEGABAABgKQRYAAAAWAoBFgAAAJZCgAUAAIClEGABAABgKQRYAAAAWAoBFgAAAJZCgAUAAIClEGABAABgKQRYAAAAWAoBFgAAAJZCgAUAAIClEGABAABgKQRYAAAAWAoBFgAAAJZCgAUAAIClEGABAABgKQRYAAAAWAoBFgAAAJZCgAUAAIClEGABAABgKQRYAAAAWAoBFgAAAJZCgAUAAIClEGABAABgKQRYAAAAWAoBFgAAAJZCgAUAAIClEGABAABgKQRYAAAAWAoBFgAAAJZCgAUAAIClEGABAABgKQRYAAAAWIrNbrfbHV0EAAAAkFEuji4gN0XFk9XzCy83G+2dj3i52XQ5NsnRZSCX+Ho4KTbB0VUgt3i4iPbORzwymEwZQgAAAABLIcACAADAUgiwAAAAsBQCLAAAACyFAAsAAABLIcACAADAUgiwAAAAsBQCLAAAACyFAAsAAABLIcACAADAUgiwAAAAsBQCLAAAACyFAAsAAABLIcACAADAUgiwAAAAsBQCLAAAACyFAAsAAABLIcACAADAUgiwAAAAsBQCLAAAACyFAAsAAABLIcACAADAUgiwAAAAsBQCLAAAACyFAAsAAABLIcACAADAUgiwAAAAsBQCLAAAACyFAAsAAABLIcACAADAUgiwAAAAsBQCLAAAACyFAAsAAABLIcACAADAUgiwAAAAsBQCLAAAACzFxdEFIH3LlizW5k3B2rtntw79e1BXr141tv29a3+a/ffu2aXf5vyifXv3KCw0VBER4XJyclJAYEFVq1Zdnbt0VZt7293yfd+b8JZmzfjJWC5eooT+XLIiey4KN5Rb7W2327V44QItXPCHDhzYp/BL4bLZJP+AAFWqVEUdO9+vzvd3kc1my9Hrzc9CQ0K0ZvUK/b11i44cPqQLF87rypUr8vHxUaXKVdT5ga7qdH/XNG1w9sxpzZw+TVs2bdSZ06cUFxcnDw8PFS9RUg0aNVaffoNUslSpm7739GlT9MmH/2dat2XHvmy/RmSfY8eOavL3k7R540aFhYXKy8tLVatV10M9eqpDx06OLg/ZjPbOOJvdbrc7uojcEhVvnUvt0+NBHTyQNrhI6QeaaVO+1ycfvn/Tc/YfOFjPvzj2htu3bdmsxx8ZrNT/S1g1wHq52WjvdNr71bEvauGC+Tc97r5O9+vt//vgFhXnLV5uNl2OTXJ0GRky5ftJ+uKzj266zz0tW+v9jz+Xs7OzJGn/vj168tEhioqMvOExXl5e+uq7qapWvUa6248fO6r+vR9SXGysab0VA6yvh5NiExxdRc5bu2a1nh85QnFxcelu79K1m954e8Id/wenh4tob+Wv9s4IhhDkUTabTaVKl1H7jp1Uv0HDW+7v7OyiqtWqq1v3nnrsiaf01PBn1en+LnJxcTX2mfHTNIWFhaZ7fEx0tMa/9ory0d8zeUputPee3btM4bV0mbJ67Mmn9PCjj6tQ4cLG+kULF+jI4UPZdGW4kYKFCqnLgw9p2PBn1fWhHnJ3dze2rV29Un/M+81Y/vqLz4zwarPZ1PmBrho2/Fm1an2vsU9UVJSmTf4u3fdKSkrS+NdeThNekXeFhIRozAujjDBToWKQnhr+jDre19nYZ/68uZo9c4ajSkQ2or0zjyEEedTkH2fKw8NDkvT1l59r29YtN92//8DB6j9wcJr15cpX0JeffyIp+ePjc2fPqnDhImn2+/TjD3Tq1El5e3urWo2a2rJp4+1fBDIsN9r71MkTpn0nvPehqteoKUmqXr2GXhj1rLHt0sWLUsUsXw5uoljx4hr/9v+pfcdOcnFJ+RHc8b77NeyxIcbyhnVr9eBDPSVJp06eNNY3v6elXn/rXWO5T/cuOnzoX0n/tVs6pv84Rbt2bJezi4uaNrtb69asysYrQk6Y8eNURf73R4uXl5emTJsuP39/SZKTk00L/1wgSfpu0tfq2buP0VsPa6K9M48e2DzqWpjJqtjYWB3Yv8/0i8rV1VWly5RJs++WzRv1y+yZkqRRL45VsaLFbuu9kXm50d7lKwSZjlmxfJmioiIVERGutWtWG+sDAgNVpVr126oHN9ax0/3/9Zab+w8aNGps/MKSZBoHXb5Cyl8T/x488N846Xjt2P6Pzp09Y2xr2vzuNO937OgRffPFZ5KkIUMfu+EQA+Qtq1alDN1q0LCR6f+Ne9t1MF6HhYZqz57duVkacgDtnXn0wN5hXhnzghb9+Uea9U5OTnru+Rfl7x9gWh8dHWUMHbj7npZ6sFt3/XOL3j/kHZlp78pVqqjvgEGa+dM0SdIPk77RD5O+MR1XtVp1/e/1N+Xt7Z2zhSON8+fDjB4YSapR8y7j9VMjRmrXzu26cP68Qs6dVd8eXU3HFihQQD379Ff/QQ+b1icmJmr8/8YqLi5OlapU1aOPD9MP35nbHHlPfHy8jh87ZiyXKlXatP365X8PHFCtWrVzozTkANo7a+iBzQc8PQvo9bcmqE//gWm2ffLh+zpz+rR8fHz1v9ffcEB1yG43a+8XXnpZL//vddNY2Wv8/f3VqfMDqlS5Sm6UiVQSEhL0zhvjlJiQfKdKYGBBde/Zx9hevkJF/TjzV9W8q1a6x9dr0CjNkARJ+mnqD9q9a6dcXFz1+psT5OKatt2R91yOiDDdj+B13R+UXl5epuXw8PDcKAs5hPbOGsv1wJ48eVLjxo3TDz/8cMN94uLi0tzF5+7uLtnccro8h7uv0/2qUrWqrly+ogP792nD+rWKiYnWay+/pF07tmvsq+OMfTdtDNavv8yWJL0w5mUVLlLUUWUjizLT3pL00fvv6qdpUyRJxYoVV6cHuighIUHz5/6q8PBwffTB/2nr1s365POvHHA1+VNUVJRefvE5bVi3VlLyL6sPP/1CAYGBxj6HD/2rkcOf0LmzZ2Wz2dSmbXtVDKqkXTt3KHj9Wq1bs0pbNm/UxK++U5169SVJR48c1rdfTZQkDX3sCVWuUjX3Lw7Z4vqba7nZ9s5Ge2eM5QLsxYsXNXXq1JsG2AkTJmj8+PGmdePGjdMLL4+7wRF3jrtbtNTdLVoaywv+mKfXXn5JkvTL7Jlq2uxutWqTfOfyu2+Pl91uV8tWbXR/lwcdUS5uU2bae83qlUZ4dXJy0ndTflSJksnzht7TopUeezi5x3bNqpXaFLxBjZs2y8UryZ/OnTurUSOG6d+DByRJAQGB+nji16bhA5I0/n9jde7sWUnS/V266bU33ja2DXt0iLZu2aS42FhN/PQjfTd1uiTpo/cmKD4+XlWrVdfDjz6RS1eE7ODr5yebzWYEl+ioKNP2qGjzckCAeWgYrIX2zpo8F2Dnz7/5HJVHjhy55TnGjh2rUaNGmda5u7srH0wjl0bqaXYkaeuWzUaguXDhgiRp9aoVqndX+r0zZ8+cUb27qlp2Ptj85mbtvXljyswS/v4BRniVZMxGcM2BA/sIsDls757dev7Zp3Q+LEySVKZsOX36xTcqVdp8o2XklSvat3ePsVy9prmtqtWooa1bNkmSaS7hCxeTv7/379urpvXNgTi1hrWrSbLmfLB3Kjc3N5UrX15H//t9d+rUSdP2UyfMM4oEVa6ca7Uh+9HeWZPnAuyDDz5o+kskPbeaxNfd3d00p+I1CRaa2D4z4uLi9M+2rWrSrHmabddPl3OHz3+cL2S1vZOSEo3X4eGXdOb0KSPE7r3urlZ399ubFQE3t3L5Mr328kuKjY2RJNWtV1/vfzJRfn7+afZNTNVukrR3926pV8ryvj0p4dbdI+3PPVhTy1ZtjECzdctmRYSHG3emL1262NivSNGiqnHdH6CwHto78/JcgC1evLi+/PJLde3aNd3t27dvV/369XO5qtz3y+yZxrydO7b/Y9r28Qcpj4Ls0buv/P389dQTj6h4iRJq1LipSpYqrYSEq/r34EGtXb3SdOw9LVsbr1u1bqOYmJg07713z26dPZM8NY+Hp6ea332PAgMLZtu1Ia3caO/6DRsZjwlOSkrSo0MGmsbAXuPk5KTGTZpm+zUi2V9LF+uVl55XUlLyk8O8fXzUpNndmv/7b6b9vL291a17L/n5+SuoUmUd+vegJGnB/LmKiYlWxaBK2rlju9H7KklNmqZMo9W4STOVLp122ryjRw7r6JHDxnKbtu2z9fqQPfoNGKQ5P89SZGSkoqKiNGRQf3W8r5OOHD6spYsXGfs98ugTzAl6B6C9My/PPUq2S5cuqlOnjt54I/074nfs2KG6desaP/wzw0qPFn3s4YG3nMxekr79YaqqVKmmls0b3XLfoY89oeHPPHfL/ca9MkZ/zP9dEo+SzS250d52u12jn3tGK5cvu+lxTzw1XE8MG37rovMQKz1K9tuvJmrS11/ccr/iJUpo/qLlkqTtf2/TM089rpiY6BvuX6x4cU2aMl3FihXP1PtbcehAfnmU7JrVq/T8yBGKj49Pd3t+erQo7Z2/2jsj8lwP7AsvvKCo6wYwpxYUFKSVK1fecHt+5OHpqVGjX9I/f2/ToUP/6tKli4qJjpaHh4eKlyip2nXq6sGHeqS5MQTWlNX2ttlsev+jT7XozwVa9OcfOnhgv8LDw2WzSQULFlLNu2qpe8/ejH3Ng+rUq6+Zc+Zp5vRp2rp5o86cPq34+Dh5eHqqTNlyuvuelurbf5B8fH0dXSqyUYuWrfTL3Pn64btvtSk4WBcunJenZwFVrVZNPXr1VoeOnRxdIrIR7Z05ea4HNidZqUcOt8dqPbC4PVbqgcXtyy89sEiWX3pgkSyjPbA8yAAAAACWQoAFAACApRBgAQAAYCkEWAAAAFgKARYAAACWQoAFAACApRBgAQAAYCkEWAAAAFgKARYAAACWQoAFAACApRBgAQAAYCkEWAAAAFgKARYAAACWQoAFAACApRBgAQAAYCkEWAAAAFgKARYAAACWQoAFAACApRBgAQAAYCkEWAAAAFgKARYAAACWQoAFAACApRBgAQAAYCkEWAAAAFgKARYAAACWQoAFAACApRBgAQAAYCkEWAAAAFgKARYAAACWQoAFAACApRBgAQAAYCkEWAAAAFgKARYAAACWQoAFAACApRBgAQAAYCkEWAAAAFgKARYAAACWQoAFAACApRBgAQAAYCkEWAAAAFiKzW632x1dBAAAAJBRLo4uIDeFxyQ6ugTkEn9PZ0XEJDm6DOQSP08nnboU7+gykEtKBbgpNsHRVSC3eLiI9s5HPDKYTBlCAAAAAEshwAIAAMBSCLAAAACwFAIsAAAALIUACwAAAEshwAIAAMBSCLAAAACwFAIsAAAALIUACwAAAEshwAIAAMBSCLAAAACwFAIsAAAALMUlIzudOHEiy29QpkyZLB8LAAAAXC9DAbZcuXKy2WyZPrnNZlNCQkKmjwMAAABuJEMB9hq73Z5TdQAAAAAZkuExsIRXAAAA5AUZ6oFduXJlTtcBAAAAZEiGAmzLli1zug4AAAAgQ5hGCwAAAJaSqZu4rrd161YtWbJEp06dUlxcXJrtNptN33///e28BQAAAGBis2fx7qxHH31UkydPvuF2u90um82mxMTELBeX3cJj8k4tyFn+ns6KiElydBnIJX6eTjp1Kd7RZSCXlApwUywzNOYbHi6ivfMRjwx2rWapB/ann37SDz/8kO42m83GjAUAAADIMVkaAztt2jRJyWG1ZMmSxuuGDRvKzc1NNptN9evXV4sWLbKvUgAAAEBZDLA7d+6UzWZTly5dNHLkSGP9pk2btH37dgUEBCg+Pl5z587NrjoBAAAASVkMsJcuXZIk1a1b1/SIWbvdripVqmjo0KHavXu3xo4dmz1VAgAAAP/JUoB1d3eXJHl4eMjDw8NYf+LECUmSi4uL7Ha75s+fnw0lAgAAACmydBNXwYIFFRUVpfDwcAUFBRnrH3vsMXXu3FnffvutJOnChQvZUyUAAADwnywF2IoVK+rEiRM6d+6cGjZsaKxfvny5li9fbkyhVb58+WwrFAAAAJCyOISgXr16stvt2rx5s0qXLq1OnTqlO3XWs88+e9sFAgAAAKll6UEGly5d0pkzZ+Tk5KRq1arp4sWLGjp0qP78808lJibK399fY8aM0YsvvpgTNWcZDzLIP3iQQf7CgwzyFx5kkL/wIIP8JaMPMsjyk7jSEx0drYiICBUpUkTOzs7ZddpsQ4DNPwiw+QsBNn8hwOYvBNj8JUefxHUjBQoUUIECBbLzlAAAAIBJlgLstSdxZcSgQYOy8hYAAABAurI0hMDJycn0AIObSUzMOx/bM4Qg/2AIQf7CEIL8hSEE+QtDCPIXhwwhkGSajSCjIRcAAADIqCwH2Jt13NpstptuBwAAALIqSwE2KSntR7Px8fH6999/9c4772jmzJnq3Lmzfv/999utL1+Ki4vT9998qX179+jk8WOKiAhXXHy8vL29VaZMOTW/p4V69ukvbx+fG55j7+5denRwP9MQji8nTVH9ho1M+0357hvt2rlDR48cVkR4uGJiolWggJdKli6tRk2aqnffgSpUuHCOXStSt/dunUi3vVuqVzrtnZiYqHlz52jRgvk6cviQ4uPjVKRIUTW7u6UGD31UhQoXMe1/4vgxrVuzSn9v26qTJ47pwvnzio6Olp+/n6pVr6kHH+qpFq3a5Oal51tXr17Vovm/afWKpTp25JCuXL4sJ2cnBQQWVOUq1dXh/gfV7J5WaY5b9ddi/fn7HP17cL9iY6IVWLCw6jZsrL4DH1GpMmVN+8bHxWnaD1/r4L49OnXiuC5fDld8XLy8vL1VqkxZNWnWQl179pW3941/jsDxjh07qsnfT9LmjRsVFhYqLy8vVa1WXQ/16KkOHTs5ujxkM9o747J1Gi0puWe2bt262rVrl95//32NGjUqO09/W6wyBjb80iV1aN38pvuUKl1aP/w0W35+/mm2xcfHa1Cf7jp65LBpfXoBtlXT+oqJibnh+wQEBOq7aTNUqnSZjF9AHmClMbDhly6pfetmN92nVOkympyqvePi4jR65NPaFLw+3f19/fz02ZffqXqNmsa6CW+9rrlzZt/0fXr06qsXX34tcxeQB1hpDGxiQoJeeOZx7fh7y0336zf4MT0y7BlJyT9X33vzVS1dOD/dfd3c3fX6hI/UuFkLY11E+CU91LFFuvtfU6JUaX3x/Uz5+vll8iocK7+MgV27ZrWeHzlCcXFx6W7v0rWb3nh7wh0/XC+/jIGlvZNldAxslp7EdTM2m01VqlSR3W7XpEmTsvv0+UbhIkV1b7sO6j/oYQ0bMVL9Bg5W8eIljO2nTp7U77/+ku6x3375eZrweiP+AYFq0aqN+g0crGEjRmrQw4+qfIWKxvZLly7qp6k/3N7F4JaKFCmqe9t11IBBQ/XUiOfUb+CQ69r7hKm9v5r4iRFenZ2d9eBDPfXo40+pWPHikqTLEREa+8JIxcREp3mvEiVLqXvPPnri6WfUvmNn05zNc36eqc0bN+TUZULSutXLTeG1UpVqGvL40+rRd5C8UvWGzv5psiIjr0iSfv9lhim8tm53n4Y8/rTKlk/+Xo2Pi9Pbr41RWGiI6b0KFS6ilve2V6/+Q/TIsGfVo+8gFS2W8v/VmVMn9ee89H+OwLFCQkI05oVRRpipUDFITw1/Rh3v62zsM3/eXM2eOcNRJSIb0d6Zl603ccXGxmrjxo1aunSpJOnYsWPZefp8wz8gQAuWrkyzvu+AIXqgQ2tj+dzZM2n22b1rh2b8OEWS1LL1vVq9cvlN3+v3hcvSrHts2HB1aNVM0dHRN3wfZJ/k9l6VZn2/AUN0f4dWxvLZs6clSRER4ZozO+WH2MAhj+qpESMlSR063a9e3TrLbrfr7JnT+vOPeerRq68kqWJQJX342Ze6+55Wpr/gGzdppjdff8VY3rB+rRo1uXmPMLLuzOmTpuX/++xbo2e9YKEi+ubzDyRJiYkJirpyRZ4enpo57Xtj/3vbd9LLb/yfJKlr977q362DoqOjFBV5RXN/nq7Hhyd/6uXnH6DZf6T9/u/Rd5D6dGlrLIecPZut14fsMePHqYqMjJQkeXl5acq06fLz95ckOTnZtPDPBZKk7yZ9rZ69++TJhwch42jvzMtSD6yzs3O6/7y8vHTvvfcqIiJCklSYsZPZIjExUaEhIZr3m7mnpELFINNyXFyc3nztFSUmJqpe/Ybq1W9Apt4nKSlJly5e1IL5c43wKknlr3sf5Kxr7f17mvauJEnaFLxe8fEpH5e3advOeF22XHlVDKpkLK9dnfKHUK8+/XVPi9ZpPn66t30H0/LVq1dv/yJwQ2XLVTQtr/5rieJiY3XhfJj+3hJsrC9TroKKFCuuA/v36ML5MGP9Pa1T2tvXz0+16zU0loPXrrrh+yYmJiosNEQL5/1qWl+uQsUbHAFHWrVqhfG6QcNGRpiRpHvbpXzPhoWGas+e3blZGnIA7Z15WeqBtdvtN51p4NovyL59+2a9Mmjzxg0a8eSj6W6rW7+BunTrYVr3zRef6djRI/L09NT/3nhbZ89krOf05Inj6tHlvnS3VagYpIFDHslc4ciSzRs3aPiT6X+t69ZvoK7/tfehgwdN20qWLG1aLlGytA79e/C/fQ/c8n2PHT1qWq5R864M14zMa3pPKzVv2UbrVyf/wvr0/bf06ftvmfap26CxRo0dJ5vNpiOHzO1dvGSpGy6fOnlc8fHxcnNzM9Zt2xysF595PN1aatWtr05dut/W9SD7xcfH63iqTzBLlTJ/j1+//O+BA6pVq3ZulIYcQHtnTZbHwN7q3q/+/fvrrbfeuuk+yJoO93XWR59/JXd3d2Pdrh3bNfOnqZKk4SNHq8R1v+SyolHjpvpi0mQFBha87XMh6zrcd78+/vxro70jLkeYtnt5e5uXvVIe5xwREX7Tc0dHR+m9d94wlsuVr6C27dP/YwbZw2azafy7n2jA0CfSvRmjaLESatuxs0r894fJlevau4CXl3k51eO7k5KSFHnlcobquLd9J73z4ZdyS/VzBHnD5YgI0+/YtN/j5v8HwsPDc6Ms5BDaO2uy1AM7efLkdNc7OTnJ399f9evXV4kSJdLdJyNiYmK0bds2BQYGqnr16qZtsbGx+vnnn2/6iNq4uLg0d/El//LP9uc25KgyZctpxHOjdTU+XmfPntWqFcsUER6uJYv+1IH9+/TJF9+oeImSio2N1RuvvaykpCQ1bNxE3Xv1ydT7+PsHaMRzo5WQkKCw0FCtWbVCoSHntHlTsAb17q6PPv9KlatWy6GrxDVlypbTM8+9oPj4eJ07e0YrjfZeoAP79+rTL75V8RIl0xx3/R+TGZ1X5Pz5MI1+9mnt3bNLklS4cBF9+OmXpt47ZL+EhKt6d/wrWrlskSSpbPmKatGmna5ERGjxgt8Vcu6M3n/rNR06sF/Dnx+b9gTXte+tOhNKlSmnJ0Y8r6vx8Qo5d0ZrVy3X5YhwLV+6UP8e2Kd3P/laRYtn/ec1cl7a73HmWb+T0d4Zk6VEN3jw4Oyuw3Dw4EG1b99eJ06ckM1m0913361Zs2ap+H93V0dEROjhhx++aYCdMGGCxo8fb1o3btw4jXzpfzlWd04oVryEBgweaiw/OfwZDez9kM6HhenY0SP6+P139d7Hn2vW9Gk6cfyYCnh56ZVxb2Z6ig0fX1/T+wwfOUqPDuqnQ/8eVFhYqN4c94p+nP1btl0X0pe2vZ/VgN7djPb+6P0Jev/jiWmmTouOipKPr2/KcnSU8drfPyDd9zr070GNeuZJnfvvBp5Spcvosy8nWW66NCtaMPcXI7x6+/jos0k/GnOxVqleU//3RvINdb/PmamuPfvK19ffdHzq9k1eThmv7uTkJG8fX9P2osWKq1f/Icbyw0+M0BODeurC+TCdOH5UX3zyf3rj/z7NrstDNvD18zMN04uOMrd51HX/DwQEpP99DmugvbMmS0MIhg4dqqFDhxqzDVzv0KFD+u233/Tbb5kPPS+99JJq1qyp0NBQHThwQD4+PmrevLlOnDiR4XOMHTtWERERpn9jx6bTk2ExgYEFVfOulHEvf29Nnorn4oULkpL/p3+wUzs1rlNdjetU11OPDTEd/9RjQ9S4TnVt27L5pu/j6VlADRs3NZYPHtivyCtXsukqkFE3au9KlSub9jt93V3tp06mfK9UrGTeV5KC16/VY0P6GeG1Zq3a+n7qTMJrLvl76ybjdanS5UwPEqhcrYbx2m6368ihg6oQZG7Ds6dPmZZTz2pQqnTZW/agBwQWVLUatYzlW81Hi9zn5uamcuXLG8unTl33PX7d78Ogymm/z2EdtHfWZCnATpkyRVOnTtXu3enfCTdv3jz16NFDvXr1yvS5N2zYoAkTJqhQoUIKCgrSH3/8oQ4dOuiee+7RkSNHMnQOd3d3+fr6mv65W2ic19YtmxR13V9gUvKE93t27TSWb3cu4107tuvSxYtp1sfGxmrr5o23d3JkWMbbO7nBGzdtbvr/ecVfKVOhHTl8yDQH8PVP1poze4ZGPTPMeL82bdvry2+nKCAwMHsuBreUlJjygI1TJ48Zc71K0sF9e0z7urt7qHK1GiqY6qlqa1emtHdE+CVTAG3WImWavX+2bU7Tk3PtmH17dxnLd/qk6FbVMtX37tYtmxWRatzj0qWLjddFihZVjVQPLIE10d6ZlyODQhMSkh+ZkZVxGzExMXJxSSnLZrPpq6++0vDhw9WyZUvNmHHnT+I7e/qP2rwxWA0bN1FQpcry8PBQaGioVi5favS2SlLzFq0kSZWrVFXrtu3TnCf80kX9s22rsVy3fgP5BwQaHz8sW7JIv/48U/UaNFLVatXl5e2tSxcvas2qFTqTqpenTr36N31sLW7PrOk/avPGDana21NhoSFasXyZLl44b+zXvEVLSZKvr5969O6n6dOSx6L/OOU7RYRfUsFChfXHvN+M77vixUuo0/1djOOnT5usTz96z1guUqSoatSsZZpTVpKKFiumdh14ZGFOqV2vgYLXrZIkRV65omceG6gWbdop8vJlLVow19jPw9NTNWvVkbOzs/oNekSffzhBkrR86UIl2e0qW76CVixdpNj/nqTn5e2jbr36G8f/Nvsn/b15o+o2aKwKQZXk7uGp82EhWrvyL126mPJzpEnzlrlw1cisfgMGac7PsxQZGamoqCgNGdRfHe/rpCOHD2vp4kXGfo88+gRzgt4BaO/My3CATe8j/EuXLqVZHx0drSVLlkjK2l/2VatW1datW1WtmvmmoYkTJ0qSunTpkt5hd5zY2BitXb3SNI9napWrVNWzo16UJN3ftZvu79otzT7btmw2DSN47MnhaR4lm5CQoM0bN9zw6UvFS5TUK+PezOJVIKNu3d7VNHLUS8byk08/q0MHD2jTxg1KTEzU3F9/Nu3v6+unCR98Kk/PlDvUr02tdU1oaIg+/+SDNO9Vr35DAmwO6vJQb61esVT7dif3rh8/elg/fm9+cp6Tk5NGPD/WGM/atUdfHdi3x3ga17UxtNe4ubvrlTfeVaFUPbVS8v9XwetWGYH5ekGVq+rJZ0Znx2UhmxUtWlQT3vtQz48cofj4eB05fEhfTvzMtE+Xrt3Uu28/B1WI7ER7Z16GA2y5cuVMgdRut+udd97RO++8c8NjsjLQuFu3bpo5c6YGDhyYZtvEiROVlJSkr7/+OtPntZIevfupYKFC2rNrp8LCwnT5coRcnJ0VGFhQQZWrqGXre3Vf5wfk4up6W+/T4b7kJzbt3rlDoaHnFBEeLpvNJj8/f1UIqqS7W7RUlwe7y8PTM5uuDOnp2buv0d7nw0IVcV17t2rdNk17u7u765MvvtXvv/2ihX/M05Ejh3Q1Pl5FihZTs7tbaPDDj6lwkSI3eVc4iruHhz7+aor+nDdHa1Ys07EjhxR55YqcXZxVsFBh1axVVw/27Keq1VM+JrTZbHrptbfVqOk9+nPeHB06uE+xMTEKCCyoeg2bqM+gR1S6TDnT+3Tt3keBBQtp/55dOh8WqiuXL8vZxVkBAQVVIaiy7m7VRm073i8Xl9v7OYKc06JlK/0yd75++O5bbQoO1oUL5+XpWUBVq1VTj1691aEjf2jeSWjvzLHZM/g5v5OT000fXmA66X9Bt1u3bpozZ87tVZiNwmMSHV0Ccom/p7MiYpJuvSPuCH6eTjp1Kf7WO+KOUCrATbEJjq4CucXDRbR3PuKRwa7VTN3EldExrXa7XXXq1NFHH32UmdMDAAAAt5ThIQQrVyaPzbPb7WrTpo1sNpuefPLJNDMNuLq6qmTJkipbtmz2VgoAAAAoEwG2ZUvznap2u10VK1ZMsx4AAADISVmaRispibGFAAAAcIwsBdi///5b69atkyT16NFDJUqkPEf7zJkzxo1bd999t+rVq5cNZQIAAADJMjwLQWp9+/bVzz//rNKlS+vQoUOmBw8kJiaqatWqOnLkiHr27KlZs2Zla8G3g1kI8g9mIchfmIUgf2EWgvyFWQjylxyZheCazZs3S5I6duxoCq+S5OzsrA4dOshut2vjRh5HCgAAgOyVpQB77tw5SVKpUqXS3V6sWDFJUmhoaBbLAgAAANKXpQDr5JR82P79+9PdfuDAAUnieb0AAADIdlkKsGXKlJHdbtcvv/yiDRs2mLZt2LBBP//8s2w2m8qUKZMtRQIAAADXZGkWglatWmnfvn26evWqWrZsqQ4dOqh8+fI6evSoli5dqoSEBNlsNrVu3Tq76wUAAEA+l6VZCA4cOKDatWvr6tWrstvtstlsxrZrp3N3d9f27dtVpUqV7Kv2NjELQf7BLAT5C7MQ5C/MQpC/MAtB/pKjsxBUqVJFX3zxhSm4mk7q5KQvvvgiT4VXAAAA3BmyFGAl6ZFHHtG6devUrVs3FS5cWM7OzipcuLAeeughrV+/XkOHDs3OOgEAAABJWRxCcCsXL17U9OnTNWXKFG3bti27T59lDCHIPxhCkL8whCB/YQhB/sIQgvwlo0MIsnQTV3qSkpK0cOFCTZkyRQsWLNDVq1ez69QAAACA4bYD7J49ezR58mRNnz7deHDBtU7dG42RBQAAALIqSwH20qVLmjFjhqZMmaK///5bUkpoTa1cuXK3VRwAAABwvQwH2KSkJC1evFhTpkzRH3/8ofj45PFmqafRuvbf6tWr67PPPmMeWAAAAGS7DAfY0qVL69y5c5LS9ra6u7urc+fO+vXXX2Wz2XTXXXcRXgEAAJAjMhxgz549K5vNZoRXV1dXtW3bVn379tWDDz4ob29vOTlleVYuAAAAIEMyPQbWZrOpcuXKmjp1qho1apQTNQEAAAA3lKUu04MHD6pp06Zq1KiRPv74Y50+fTq76wIAAADSleEAW716ddntdmMIgd1u17Zt2zR69GiVLVtWLVq0yLEiAQAAgGsyHGB3796tzZs3a9iwYfL395eUcjNXUlKS1q9fb+y7efNmzZo1S3FxcdlbLQAAAPK9LD1KNj4+Xr///rumTp2qpUuXKjEx+RGt1z+4wN/fXxcuXMieSrMBj5LNP3iUbP7Co2TzFx4lm7/wKNn8JaOPks1SgE3t3LlzmjZtmqZOnap9+/Yln/S/2QpsNpsRbvMCAmz+QYDNXwiw+QsBNn8hwOYvuRZgU9u8ebMmT56s2bNnKzw8nAALhyHA5i8E2PyFAJu/EGDzF4cE2Gvi4uI0d+5cTZ06VYsWLcru02cZATb/IMDmLwTY/IUAm78QYPMXhwbYvIoAm38QYPMXAmz+QoDNXwiw+UtGAyyPzgIAAIClEGABAABgKQRYAAAAWAoBFgAAAJZCgAUAAIClEGABAABgKQRYAAAAWAoBFgAAAJZCgAUAAICl5KsncQEAAMD6MvjArjtDVDxZPb/wcrPx6MF8hEdN5i+0d/5Ce+cvPEoWAAAAdyQCLAAAACyFAAsAAABLIcACAADAUgiwAAAAsBQCLAAAACyFAAsAAABLIcACAADAUgiwAAAAsBQCLAAAACyFAAsAAABLIcACAADAUgiwAAAAsBQCLAAAACyFAAsAAABLIcACAADAUgiwAAAAsBQCLAAAACyFAAsAAABLIcACAADAUgiwAAAAsBQCLAAAACyFAAsAAABLIcACAADAUgiwAAAAsBQCLAAAACyFAAsAAABLIcACAADAUgiwAAAAsBQCLAAAACyFAAsAAABLIcACAADAUgiwAAAAsBQCLAAAACyFAAsAAABLIcACAADAUlwcXQDSt2zJYm3eFKy9e3br0L8HdfXqVWPb37v2p9l/65ZNenzo4Jues1TpMpq/cKlp3bhXxuiP+b/f9Linhj+rR58YlvHikWvua9dGZ86cvuk+k6dNV736DXKpIuSUkJAQrV65XFu3btHhQ4d04XyYrly5Ih8fH1WuUlUPdHlQ93fpKpvN5uhSkY2OHTuqyd9P0uaNGxUWFiovLy9VrVZdD/XoqQ4dOzm6PGQz2jvjCLB51PeTvtbBA2mDKoD8acH8efrskw/TrL906ZI2bQzWpo3BWrZ0sT7+7As5Ozs7oEJkt7VrVuv5kSMUFxdnrAsPD9fG4A3aGLxB69as0RtvT+CPljsE7Z05BNg8ymazqVTpMqpeo6YunA/Ttq1bMnxs9Ro11b7jfWnW+/r63fS4Hr36qFTp0mnW16lbP8PvDccZNfrFdNeXLJW2TWFdhQoV1t0tWqhUqdI6c/q0/lww3/iFt3rVSs2b+5se6tHTwVXidoWEhGjMC6OMtq1QMUgd7+ukI4cPa/GiPyVJ8+fNVY2ad6lPv/6OLBXZgPbOPAJsHjX5x5ny8PCQJH395eeZCrAVKwZp0JBHMv2e7TvepwYNG2f6OOQNgx/OfJvDOooXL663331PHe/rLBeXlB/d93W+X4+lGj60bu0aAuwdYMaPUxUZGSlJ8vLy0pRp0+Xn7y9JcnKyaeGfCyRJ3036Wj1796HX3eJo78wjwOZR18JrVqxZvVJt7mmiyMgo+fn5qcZdd6ln735qfvc9Nz3utVfG6tLFC7LZbCpWrLiaNr9bAwY/rOLFS2S5FuSezh3b6tzZc3J3d1O58hV0b9v26jdgoDw9PR1dGrJBp/sfSHd9o8ZN5O/vr/DwcEkyjZeHda1atcJ43aBhIyPMSNK97ToYgSYsNFR79uxWrVq1c7tEZCPaO/OYheAOFBERofDwcCUkXNWFC+e1ZtVKjRj2mD7+8L2bHnfu7BnFxcUpNjZWx44d1czpP6p3967asf3vXKoct+PUyZNKSLiqqKgo7dm9S5998qH69e6hixcvOro05KDzYWFGz40k1bzrLgdWg+wQHx+v48eOGculrhsGdP3yvwcO5EZZyCG0d9bQA3sHcXZ2Vt36DVSpUmX5+wfoyJFD+mvpEiUmJkqSfpzygxo0bKR7WrQyHefv76/GTZupVKkySrInaeOG9dq3d48kKfLKFY0ZPUq//7lE7u7uuX1JyIAyZcqqXoMGKl68hC5HRGjp0sUKCw2VJB05fEjvvPm6Pvj4MwdXiZyQkJCgN17/nxISEiRJgQULqmfvvg6uCrfrckSE7Ha7sezl7W3a7uXlZVq+1vsOa6K9syZPBth9+/Zp48aNatq0qapWrar9+/fr008/VVxcnAYMGKA2bdrc9Pi4uDjTXXySksOXzS0ny3aoSpWraMnyNQosWNC0/oGuazVi2OPGN8f8338zBdhHn3xKr77+plxdXY11w595Tq+OfVGL/vxDkhQSck6bNm5Qi5atc/5CkClffjNJ5StUNK17+pln1a93Dx07elSStGL5X8Z0S7hzREVF6sXnn9O6tWskJf+S+3TiVwoMDHRwZchuqcNNesu4s9DeGZPnhhAsXrxYderU0ejRo1W3bl0tXrxYLVq00KFDh3T8+HG1b99eK1asuOk5JkyYID8/P9O/CRMm5NIVOIafn3+a8CpJzZrfo7LlyhvLR48cMW0vXbqMKbxKyTMg9Ok3wLTu+uOQN1wfXiXJy8tbXR98yFhOTEzU8WNHc7Ms5LBzZ89qyIB+RngNCAzUt99PYVzcHcLXz880VVJ0VJRpe1S0eTkgICBX6kLOoL2zJs8F2DfeeEMvvPCCLly4oMmTJ6tfv3567LHHtGzZMi1fvlwvvPCC3n333ZueY+zYsYqIiDD9Gzt2bC5dQd6W1fnjmHbO2pg38M6xZ/cuDejbUwcPJo+DK1uunH6cPls176rl4MqQXdzc3FSufErHw6lTJ03bT504YVoOqlw5V+pCzqC9sybPBdg9e/ZoyJAhkqRevXrpypUr6tGjh7G9f//+2rlz503P4e7uLl9fX9O/O3385heffaJ/D6Yd2B28YZ2p9y2oUiXj9fFjR/XdN1/pypUrpmPsdrtmzfjJtC6oEt8wec1fy5bqzwXzjfGP10RFRWre778Zy66urqYfjrCu5X8t09AhAxUWFiZJqle/gX6cPluly5RxcGXIbi1bpQyV27plsyJSjXtcunSx8bpI0aKqUaNmbpaGHEB7Z16eHAN7rbfIyclJHh4e8vNLmYDfx8dHERERjiot1/wye6ZOnUz+q2vH9n9M2z7+4P+M1z1691Xp0mW0ds0qfT/pa9WsVVt169WXj7ePjhw+pL+WLTGNn+nRK+UGj9jYWH058VNN/n6SmjZvrkqVqyg+Pt50E5cklStXXg0bNcmpS0UWnTt7Ru//3wR9/MF7an5P8sT24ZcuaenSxQoNCTH26/xAF3l5ed/kTLCCpUsW6aXRo5SUlCQp+Wdhs+Z36/e5v5r28/b2UfeevRxRIrJRvwGDNOfnWYqMjFRUVJSGDOpvTGy/dPEiY79HHn2COUHvALR35uW5AFuuXDn9+++/qlgxeWxfcHCwyqTqXThx4oSKFy/uqPJyzdLFC2/48IIfp042Xt/TspVKl075+uzeuUO7d+5Ic4yzs7OeHfWC6jdomGZbTEy0Vvy1TCv+WpZmW5EiRfXBpxPTjJNF3hEWFqbff/s13W31GzTUS2NeyeWKkBMOHzpkhFdJunLliiZ+9kma/UqUKEmAvQMULVpUE977UM+PHKH4+HgdOXxIX040zybSpWs39e7bz0EVIjvR3pmX5wLssGHDjGmfJKlmTXNX+aJFi245C0F+9M57H2rVir+0ccN6nTlzWhcvXFBSUpKKFC2mevUbqHff/qpWvYbpmAoVg/T5l99qzeqV2rljuy6cP6/w8Evy8PBQufIV1KJla/Xu218+vr4OuircTJcHH5J/QIDWrF6lfw8c0IULFxQVFSkfX19VqVpNnTrdr/u7dOWvdcCiWrRspV/mztcP332rTcHBunDhvDw9C6hqtWrq0au3OnTs5OgSkY1o78yx2fPR/AxR8fnmUvM9LzebYhNuvR/uDB4uor3zEdo7f6G98xePDHat5rmbuAAAAICbIcACAADAUgiwAAAAsBQCLAAAACyFAAsAAABLIcACAADAUgiwAAAAsBQCLAAAACyFAAsAAABLIcACAADAUgiwAAAAsBQCLAAAACyFAAsAAABLIcACAADAUgiwAAAAsBQCLAAAACyFAAsAAABLIcACAADAUgiwAAAAsBQCLAAAACyFAAsAAABLIcACAADAUgiwAAAAsBQCLAAAACyFAAsAAABLIcACAADAUgiwAAAAsBQCLAAAACyFAAsAAABLIcACAADAUgiwAAAAsBQCLAAAACyFAAsAAABLIcACAADAUgiwAAAAsBQCLAAAACyFAAsAAABLIcACAADAUgiwAAAAsBSb3W63O7oIAAAAIKNcHF1AbopNcHQFyC0eLlLMVUdXgdzi6SrtOhXp6DKQS+4q5c3P83zEw4Xf3/mJRwaTKUMIAAAAYCkEWAAAAFgKARYAAACWQoAFAACApRBgAQAAYCkEWAAAAFgKARYAAACWQoAFAACApRBgAQAAYCkEWAAAAFgKARYAAACWQoAFAACApRBgAQAAYCkEWAAAAFgKARYAAACWQoAFAACApRBgAQAAYCkEWAAAAFgKARYAAACWQoAFAACApRBgAQAAYCkEWAAAAFgKARYAAACWQoAFAACApRBgAQAAYCkEWAAAAFgKARYAAACWQoAFAACApRBg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HLds3qRHH771pOgNGqb9+NmqPFykmKx14FvGI0MGatvW5KEi6Q0dsNvt6tHtAR0+lNyr16BhI303+c5o3+t5ukq7TqX9ZMKRXhv1eIYeXvD6h9+oZp0GGv1435s+evbajVoP9Ei5AW/BrzM05csPb3p+H18/jX37U1WufpdpfXqPkk15L6c8/SjZu0p53xE/z29lzepVen7kCMXHx6e7vUvXbvni0aIeLnfG7+9bob2TeWSwazXP9cCm1qdPH919993atm2bypYt6+hy8oTeffurYKFC2rVzp8LCQnU5IkLOzs4qWLCQKlWurDZt26nz/V3k6urq6FLhYOvWrjHCqyQNfvhRB1aDWxn5yjvavH6ldmzdqLCQswq/dEH2JLsKFi6iarXq6b6uvVShcjXTMXUbNtWl3oN1YM92hZ47q8jLEUpKSpSXt69Kli2vOg2aqN393dO9QazPw8NU7a66+vO3mTq0f7eioyLl4+evanfVVZdegxRU5fY6DHD7WrRspV/mztcP332rTcHBunDhvDw9C6hqtWrq0au3OnTs5OgSkY1o78zJ0z2w2S0//AWHZPmhBxYp8mIPLHJOfumBRbL80gOLZBntgWV0PgAAACyFAAsAAABLIcACAADAUgiwAAAAsBQCLAAAACyFAAsAAABLIcACAADAUgiwAAAAsBQCLAAAACyFAAsAAABLIcACAADAUgiwAAAAsBQCLAAAACyFAAsAAABLIcACAADAUgiwAAAAsBQCLAAAACyFAAsAAABLIcACAADAUgiwAAAAsBQCLAAAACyFAAsAAABLIcACAADAUgiwAAAAsBQCLAAAACyFAAsAAABLIcACAADAUgiwAAAAsBQCLAAAACyFAAsAAABLIcACAADAUgiwAAAAsBQCLAAAACyFAAsAAABLIcACAADAUgiwAAAAsBQCLAAAACyFAAsAAABLIcACAADAUmx2u93u6CKQM+Li4jRhwgSNHTtW7u7uji4HOYz2zl9o7/yF9s5faO9bI8DewS5fviw/Pz9FRETI19fX0eUgh9He+Qvtnb/Q3vkL7X1rDCEAAACApRBgAQAAYCkEWAAAAFgKAfYO5u7urnHjxjEAPJ+gvfMX2jt/ob3zF9r71riJCwAAAJZCDywAAAAshQALAAAASyHAAgAAwFIIsAAAALAUAuwd7IsvvlC5cuXk4eGhxo0b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lkmShg8frkWLFql+/fpycnLS8ePHtWHDBu3bt0/jxo0zQvQjjzyiF198UZJ06NAhNW3aVA888IB2796t3377LdPXBgAGR99FBgC56foZBVLf2Z/RY44ePZruflFRUfa2bdua9k3v3/V3+vfs2TPd/Vq1apXpWQjsdrv9/Pnz9oYNG97w/f38/Ez7z5s3L939atSoYewTEhJir1Onzi2vbdy4ccYx8fHx9mbNmmXo2piFAEBm8CQuAMgmBQoU0JIlSzRjxgx16tRJRYsWlYuLizw9PVWxYkX16NFD3377rT766CPTcdOnT9fbb7+tChUqyNXVVeXKldMrr7yiRYsWZamOggULav369fruu+/Utm1bFS5cWC4uLgoICFD9+vU1cuRI0/5dunTRxIkTVa1aNbm5uaV7ziJFimjTpk366quv1KZNGxUqVEjOzs7y8vJS1apVNWDAAE2fPl0vvPCCcYyrq6uWLl2qF154QSVLlpSbm5uqVKmiDz/8UN99912Wrg0AJMlmt/M8PwAAAFgHPbAAAACwFAIsAAAALIUACwAAAEshwAIAAMBSCLAAAACwFAIsAAAALIUACwAAAEshwAIAAMBSCLAAAACwFAIsAAAALIUACwAAAEshwAIAAMBS/h+P3HD80czNJAAAAABJRU5ErkJggg==\n"
          },
          "metadata": {}
        }
      ]
    }
  ]
}